文章目录
一、apache连接保持
1.1 Apache连接保持相关参数
- KeepAlive
是否打开连接保持,OFF关闭,ON打开o - KeepAliveTimeout
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开 - MaxkKeepAliveRequests
一次长连接能够传输的最大请求数量
1.2 配置访问控制
- Require all granted:允许所有主机访问;
- Require all denied:拒绝所有主机访问;
- Require local:仅允许本地主机访问;
- Require [not] host <主机名或域名列表> : 允许或拒绝指定主机或域名访问;
- Require [not] ip <IP地址或网段列表> : 允许或拒绝指定IP地址网络访问
1.2.1 拒绝访问方式一
添加中间两行规则可以使某指定ip无法访问httpd网页
<Directory "/usr/local/httpd/htdocs">
Order deny, allow
Deny from 192.168.10.1/21
</Directory>
但是其它的ip地址的依旧可以访问
可以使用日志文件查看网站的访问情况,可以看出被拒绝访问
1.2.2 拒绝访问方式二
<RequireAll>
Require all granted
Require not ip 192.168.10.1/32
</RequireAll>
tail -5 /usr/local/httpd/logs/error_logs ## 查看错误日志文件信息
1.3 添加用户授权配置
# vi /etc/httpd.conf
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName "www.aa.com"
AuthUserFile /usr/local/httpd/conf/.awspwd
Require valid-user
#Require all granted ## 将接受所有的登录注释掉
重启服务登录网站即可访问到授权的用户界面,需要输入名称和密码方可登录到主页
二、日志分割
2.1 日志分割的必要性
随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大
- 日志文件占用磁盘空间很大
- 查看相关信息不方便
对日志文件进行分割
- Apache自带rotatelogs分割工具实现
- 第三方工具cronolog分割
2.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等计划任务服务,可对日志内容定期进行分析
3.1 配置httpd、dns服务
[root@localhost ~]# yum install httpd bind -y
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
.......省略内容
allow-query { any; };
[root@localhost ~]# vim /etc/named.rfc1912.zones
.......省略内容
zone "aaa.com" IN {
type master;
file "aaa.com.zone";
allow-update { none; };
......省略内容
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost aaa.com.zone
[root@localhost named]# vim aaa.com.zone
www IN A 192.168.110.10
[root@localhost named]# systemctl start named
[root@localhost named]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.110.10:80
#Listen 80
ServerName www.aaa.com:80
[root@localhost named]# setenforce 0
[root@localhost named]# iptables -F
[root@localhost named]# systemctl start httpd.service
3.2 配置AWStats服务
[root@localhost named]# cd /usr/local/awstats/tools/
[root@localhost tools]# ./awstats_configure.pl
> /etc/httpd/conf/httpd.conf '//第一次交互输入此路径
' y //第二次交互输入y
www.aaa.com //第三次交互输入指定域名
//第四五六次交互直接回车
[root@localhost tools]# vim /etc/awstats/awstats.www.cllt.com.conf
LogFile="/var/log/httpd/access_log"
DirData="/var/lib/awstats"
[root@localhost tools]# cd /var/lib
[root@localhost lib]# mkdir awstats
[root@localhost lib]# systemctl restart httpd
使用刚刚交互生成的网址访问,将其中的localhost修改为指定域名访问awstats网页
在服务器中输入更新数据的命令
[root@localhost lib]# cd /usr/local/awstats/tools/
[root@localhost tools]# ./awstats_updateall.pl now
日常的运维工作中手动刷新数据是很麻烦的一件事,我们可以将此任务加入到周期性任务中
[root@localhost tools]# crontab -e
* /5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
[root@localhost tools]# systemctl restart httpd
优化网页地址
[root@localhost tools]# cd /var/www/html/
[root@localhost html]# vim aaa.html
<html>
<head>
<metahttp-equiv=refreshcontent="0;url=http://www.aaa.com/awstats /wstats.pl?config=www.aaa.com">
</head>
<body></body>
</html>