一、Apache连接保持
1 Apache连接保持相关参数
- KeepAlive:是否打开连接保持,默认开启ON,关闭Off
- KeepAliveTimeout:一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
- MaxKeepAliveRequests:一次长连接能够传输的最大请求数量
1.配置文件配置
[root@server1 ~]# systemctl start httpd
[root@server1 ~]# systemctl status httpd
[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# setenforce 0
[root@server1 ~]# netstat -anpt | grep httpd
[root@server1 ~]# curl http://localhost
抓包步骤:
二、Apache访问控制
作用:控制对网站资源的访问,为特定的网站目录添加访问权限
常用访问控制方式:
- 客户机地址限制
- 用户授权限制
1.访问控制常用配置参数
<RequireALL> ##此类写法需写在开始结束标签内
Require all granted ##允许所有主机访问
Require all denied ##拒绝所有主机访问
Require local ##仅允许本地主机访问
Require 【not】 host <主机名或域名列表> ##允许或拒绝指定主机或域名访问
Require 【not】 ip <地址或网段列表> ##允许或拒绝指定IP地址网络访问
</RequireALL>
Order deny,allow ##设置允许和拒绝的顺序
Deny from 12.0.0.13 ##拒绝12.0.0.13网段访问
2.拒绝访问方式一
添加中间两行规则可以使某指定ip无法访问httpd网页
<Directory "/usr/local/httpd/htdocs">
Order deny, allow
Deny from 20.0.0.13/21
</Directory>
但是其它的ip地址的依旧可以访问
可以使用日志文件查看网站的访问情况,可以看出被拒绝访问
tail -5 err_log
3.拒绝访问方式二
<RequireAll>
Require all granted
Require not ip 20.0.0.13/32
</RequireAll>
tail -5 /usr/local/httpd/logs/error_logs ## 查看错误日志文件信息
三、日志分割
1.日志分割的重要性
随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大
- 日志文件占用磁盘空间很大
- 查看相关信息不方便
对日志文件进行分割
- Apache自带rotatelogs分割工具实现
- 第三方工具cronolog分割
2.日志分割的配置文件
Apache 自带 rotatelogs 分割工具
vi /etc/httpd.conf
ErrorLog "|/usr/bin/rotatelogs -l logs/error_log_%Y-%m-%d 86400"
CustomLog "|/usr/bin/rotatelogs -l logs/access_log_%Y-%m-%d 86400" common
systemctl restart httpd
ls /usr/local/httpd/logs/
使用第三方工具 cronolog 分割
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install
设置 cronolog 工具工具分割 apache 日志
vi /usr/local/httpd/conf/httpd.conf
ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/www.51xit.top-error_%Y%m%d.log"
CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www.51xit.top-access_%Y%m%d.log" common
systemctl restart httpd
其中日志目录下会产生新的文件
四、日志分析
- Perl语言开发的一款开源日志分析系统
- 可用来分析Apache,Samba,Vsftpd,IIS等服务器的访问日志
- 结合crond等计划任务服务,可对日志内容定期进行分析
1.配置httpd、dns服务
[root@server1 ~]# yum install httpd bind -y
[root@server1 ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
.......省略内容
allow-query { any; };
[root@server1 ~]# vim /etc/named.rfc1912.zones
.......省略内容
zone "aaa.com" IN {
type master;
file "aaa.com.zone";
allow-update { none; };
......省略内容
[root@server1 ~]# cd /var/named/
[root@server1 named]# cp -p named.localhost aaa.com.zone
[root@server1 named]# vim aaa.com.zone
www IN A 20.0.0.13
[root@server1 named]# systemctl start named
[root@server1 named]# vim /etc/httpd/conf/httpd.conf
Listen 20.0.0.13:80
#Listen 80
ServerName www.aaa.com:80
[root@server1 named]# setenforce 0
[root@server1 named]# iptables -F
[root@server1 named]# systemctl start httpd.service
2.配置AWStats服务
[root@server1 named]# cd /usr/local/awstats/tools/
[root@server1 tools]# ./awstats_configure.pl
> /etc/httpd/conf/httpd.conf '//第一次交互输入此路径
' y //第二次交互输入y
www.aaa.com //第三次交互输入指定域名
//第四五六次交互直接回车
[root@server1 tools]# vim /etc/awstats/awstats.www.cllt.com.conf
LogFile="/var/log/httpd/access_log"
DirData="/var/lib/awstats"
[root@server1 tools]# cd /var/lib
[root@server1 lib]# mkdir awstats
[root@server1 lib]# systemctl restart httpd
使用刚刚交互生成的网址访问,将其中的localhost修改为指定域名访问awstats网页
在服务器中输入更新数据的命令
[root@server1 lib]# cd /usr/local/awstats/tools/
[root@server1 tools]# ./awstats_updateall.pl now
因为手动刷新数据是很麻烦的,可以将此任务加入到周期性任务中
[root@server1 tools]# crontab -e
* /5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
[root@server1 tools]# systemctl restart httpd