文章目录
Apache配置解析
一、Apache连接保持
HTTP 是属于应用层的面向对象协议,基于 TCP 协议之上的可靠传输。每次在进行
HTTP 连接之前,需要先进行 TCP 连接,在 HTTP 连接结束后要对 TCT 连接进行终止,每
个 TCP 连接都需要进行三次握手与四次断开。HTTP 协议不会对之前发生过的请求和响应
进行管理,所以建立与关闭连接对于 HTTP 而言会消耗更多的内存与 CPU 资源。能不能允
许通过同一个 TCP 连接发出多个请求,从而减少与多个连接相关的延迟,解决办法就是连
接保持。
1.1 Apache连接保持相关参数
1、KeepAlive 决定是否打开连接保持功能
接 OFF 表示关闭,接 ON 表示打开(默认是On)
可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时
关闭此功能;
2、KeepAliveTimeout (默认超时时间5,保持连接状态的时间)
表示一次连接多次请求之间的最大间隔时间,
即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源;
3、MaxKeepAliveRequests(默认100)
用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,单位是秒。
Apache 基础配置
案例
- 查看系统配置
[root@server1 ~]# vi /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive On //是否开启连接保持功能,On开启,Off关闭,
MaxKeepAliveRequests 100//一次连接最多请求100个文件"如果网站是元素是600,那么这边最少设置620
KeepAliveTimeout 5 //单位是秒 保持时间,意思是超过5秒钟断开
默认是开启的
2、修改主配置文件
vi /etc/httpd.conf 或 vi /usr/local/httpd/conf/httpd.conf //主配置文件
保证主配置文件可以使用
注意-要在主配置文件中把Include conf/extra/httpd-default.conf 前面的#去掉
3、重新启动服务
systemctl restart httpd
1.4 抓包验证∶看应答报文。使用Fiddler软件
4、在浏览器上抓网页包
5、查看系统日志:
cd /usr/local/httped/logs/
ls -lh
二、Apache访问控制
通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。
在 httpd 服务的主配置文件的、、、配置段中均可以使用 Require 配置项来控制客户端的访问。使用 Require 配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。当 Require 配置项之后为“all”时,表示匹配任意地址。
常用访问控制方式:
客户机地址限制
用户授权限制
2.1、客户端地址限制
1. Require all granted∶允许所有主机访问;
2. Require all denied∶ 拒绝所有主机访问;
3. Require local∶仅允许本地主机访问;
4. Require [not] host<主机名或域名列表>∶允许或拒绝指定主机或域名访问;
5. Require [not] ip <IP 地址或网段列表>∶ 允许或拒绝指定 IP 地址网络访问.
用法解析
拒绝某一个指定地址访问网页
方法一:在网页站点目录中设置权限
- 访问站点目录:
vi /usr/local/httpd/conf/httpd.conf //网页站点,对htdocs目录设置控制,
vi /etc/httpd.conf
<Directory "/usr/local/httpd/htdocs"> //站点目录
Order deny,allow //先拒绝,再允许
Deny from 192.168.40.1/32 //24是网段,/32是IP地址
</Directory>
2. 重启服务后systemctl restart httpd
在浏览器上输入http://IP地址,结果禁止访问
3. 查看系统错误日志
root@server1 ~]# cd /usr/local/httpd/logs/
[root@server1 logs]# tail -5 error_log
客户机被拒绝
方法二:
- 访问站点目录并修改:
vi /etc/httpd.conf //网页站点
<Directory "/usr/local/httpd/htdocs">
....
<RequireAll>
Require all granted
Require not ip 192.168.40.1/32
</RequireAll>
</Directory>
2.重启服务后systemctl restart httpd
在浏览器上输入http://IP地址,结果禁止访问
2.2、用户授权限制
有了授权用户账号以后,还需要修改 httpd.conf 配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置允许哪些用户访问。例如,若只允许.awspwd 数据文件中的任一用户访问系统,可以执行以下操作:
2.2.1 创建用户认证数据库
[root@server1 ~]# cd /usr/local/httpd/conf/ //创建用户认证文件
[root@server1 conf]# htpasswd -c /usr/local/httpd/conf/.awspwd tom
New password:
Re-type new password:
Adding password for user tom
-C :新建使用,再次建用户则不需要
/usr/local/httpd/conf/ .awspwd:新建密码文件
[root@server1 ~]# cat /usr/local/httpd/conf/.awspwd //确认用户数据库文件
tom:$apr1$2lkh7pTV$s1sAtvmQ2GYkYbBmJF.x3/ //密文
2.2.2 添加用户授权配置
[root@server1 ~]# vi /etc/httpd.conf
AuthName "www.aa.com" //受保护的领域名称
AuthType Basic //认证类型
AuthUserFile /usr/local/httpd/conf/.awspwd //用户认证账户文件
Require valid-user //要求通过认证才能访问
#Require all granted //加#号
[root@server1 ~]# systemctl restart httpd
2.2.3 验证用户访问授权
Apache日志管理
三、日志分割
1.随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大
日志文件占用磁盘空间很大
查看相关信息不方便
2.对日志文件进行分割
Apache自带rotatelogs分割工具实现
第三方工具cronolog分割
3.1 项目测试
第一种:Apache自带rotatelogs分割工具实现
先查看路径:which rotatelogs
1.编辑主配置文件
[root@server1 ~]# vi /etc/httpd.conf
[root@server1 ~]# systemctl restart httpd
2.日志设置格式
ErrorLog "|/usr/bin/rotatelogs -l logs/error_log_%Y-%m-%d 86400"
-l:表示使用本地时间
/error_log:日志名称
%Y-%m-%d:年-月-日
86400:表示日志分隔的间隔是1天,单位是秒
3.错误日志设置
ErrorLog "|/usr/local/bin/rotatelogs -l logs/error_log_%Y-%m-%d 86400"
4.访问日志设置
CustomLog "|/usr/local/bin/rotatelogs -l logs/access_log_%Y-%m-%d 86400" common" //commmon日志类型
5.在浏览器上http://192.168.40.11
6.查看日志文件
[root@server1 ~]# cd /usr/local/httpd/logs/
[root@server1 logs]# ls -lh
第二种:第三方cronolog工具进行日志分隔
1 解压缩安装包
[root@server1 ~]# tar zxvf cronolog-1.6.2.tar.gz
2.配置文件
[root@server1 ~]# cd cronolog-1.6.2/
[root@server1 cronolog-1.6.2]# ./configure
3.编译安装
make && make install
4.查看软件路径
[root@server1 cronolog-1.6.2]# which cronolog
/usr/local/sbin/cronolog
[root@server1 cronolog-1.6.2]# vi /etc/httpd.conf
ErrorLog "|/usr/local/sbin/cronolog logs/error.log_%Y-%m-%d"
CustomLog "|/usr/local/sbin/cronolog logs/access.log_%Y-%m-%d" common
5.测试
[root@server1 ~]# systemctl restart httpd
[root@server1 ~]# httpd -t 查看语法
[root@server1 ~]# cd /usr/local/httpd/logs/ 查看日志文件
[root@server1 logs]# ls -lh
四、AWstats日志分析软件
4.1 介绍
Perl语言开发的一款开源日志分析系统
可用来分析Apache,Samba,Vsftpd,IIS等服务器的访问日志
结合crond等计划任务服务,可对日志内容定期进行分析
4.2 使用AWstats日志分析软件
不同于日志分割,是对整个日志进行分析
1.确认是否加载cgi模块
[root@server1 ~]# apachectl -D DUMP_MODULES | grep cgi
2.查看模块
ls /usr/local/httpd/modules | grep cgi
3.配置文件,开启cgi模块
[root@server1 ~]# vi /etc/httpd.conf
日志分析工具与命令引用接口
LoadModule cgid_module modules/mod_cgid.so
LoadModule cgi_module modules/mod_cgi.so
4.解压缩文件
[root@server1 ~]# tar zxvf awstats-7.6.tar.gz
[root@server1 ~]# mv awstats-7.6 /usr/local/awstats
5.AWstats可以同时分析多个站点的数据
[root@server1 ~]# vi /etc/hosts //本地映射记录
192.168.40.11 www.aa.com
[root@server1 ~]# vi /etc/httpd.conf
ServerName www.aa.com:80
[root@server1 ~]# cd /usr/local/
[root@server1 local]# ls -lh
[root@server1 local]# chown -R root.root awstats/
[root@server1 local]# cd awstats/tools/ //进入工具目录
[root@server1 tools]# ./awstats_configure.pl //自动配置脚本,根据提示填写
./awstats_configure.pl //自动配置脚本,根据提示填写http配置文件路径
Config file path ('none' to skip web server setup):
输入apache日志文件路径(绝对路径)
/usr/local/httpd/conf/httpd.conf
是否设置apache日志文件格式为combined(日志文件格式默认是common)
y
是否生成AWstats配置文件
y
输入域名
www.aa.com
设置AWstats的配置文件(回车,保持默认)
回车
生成AWstats的访问路径
> http://localhost/awstats/awstats.pl?config=www.aa.com
6.查看apache日志文件格式
[root@server1 tools]# vi /etc/httpd.conf
CustomLog "logs/access_log" combined
[root@server1 tools]# systemctl start httpd
7.编辑AWstats的配置文件
[root@server1 tools]# vi /etc/awstats/awstats.www.aa.com.conf //修改程序的主配置文件
LogFile="/usr/local/httpd/logs/access_log" //修改日志文件位置
DirData="/var/lib/awstats" //手动建立每次抓取的数据存放位置
[root@server1 ~]# mkdir /var/lib/awstats
[root@server1 ~]# systemctl restart httpd //重启让日志格式生效
8.如果之前修改过日志格式需要清空一下
[root@server1 ~]# cd /usr/local/httpd/logs/
[root@server1 logs]# ls -lh
[root@server1 logs]# rm -f *log
[root@server1 logs]# ls -lh
[root@server1 logs]# systemctl restart httpd //重新生成日志文件
9.重启主机, 在不同主机浏览器上http://192.168.40.11
10.手动采集日志
[root@server1 ~]# cd /usr/local/awstats/tools/
[root@server1 tools]# ./awstats_updateall.pl now