目录
一、Apache配置参数
1、Apache连接保持
- 相关参数:
KeepAlive:是否打开连接保持(OFF关闭,ON打开)
KeepAliveTimeout:请求间的最大间隔时间,超过就断开
MaxKeepAliveRequests:一次连接能够传输的最大请求数量
2、Apache访问控制
1>作用:
- 控制对网站资源的访问
- 为特定的网站目录添加访问授权
2>常用访问控制的方式:
基于客户机地址限制
- 使用Require配置项实现访问控制,按先后顺序限制
- 可用于< Location >、< Directory>、< Files>、< Limit>配置段中
- Require配置项的常用语法:
Require all granted
Require all denied
Require local
Require [not] host <主机名或域名列表>
Require [not] ip <IP地址或网段列表>
注:使用not禁止访问时,要放置于<RequireAll> .. </RequireAll>容器中并在容器中指定相应的限制策略
用户授权限制
- 创建用户认证数据库
cd /usr/local/httpd
bin/htpasswd -c /usr/local/httpd/conf/.awspwd ##新建密码文件
webadmin
New oassword:
Re-tyoe new password:
Adding password for user webadmin
cat /usr/local/httpd/conf/.awspwd ##确认用户数据库文件
webadmin:$apr1$L53Ws/Y2$3L4xhs4zZKDbjb.9p1fNg
- 添加用户授权配置
vim /etc/httpd/conf/httpd.conf
...
<Directory "/usr/local/httpd/htdocs">
...
AuthName "DocumentRoot" ##受保护领域名称
AuthType Basic ##认证类型
AuthUserFile /etc/httpd/conf/.awspwd ##用户认证账号文件
Require valid-user ##要求通过认证才能访问
</Directory>
systemctl restart httpd
二、Apache日志管理
1、日志分割
1>作用:
- 随着网站的访问量增大,日志文件所占磁盘空间变大
- 查看信息不方便
2>分割工具
Apache自带rotatelogs分割工具
- 配置格式:
ErrorLog "| rotatelogs命令的绝对路径 -l 日志文件路径/网站名-error_%Y%m%d.log 86400"
CustomLog "| rotatelogs命令的绝对路径 -l 日志文件路径/网站名-access_%Y%m%d.log 86400" combined
实验:
[root@localhost /]# yum -y install httpd ##安装Apache服务
[root@localhost /]# rpm -q httpd ##查看已经安装
httpd-2.4.6-88.el7.centos.x86_64
[root@localhost /]# which rotatelogs ##查找rotatelogs工具
/usr/sbin/rotatelogs
[root@localhost /]# vim /etc/httpd/conf/httpd.conf ##配置文件设置
ServerName www.test.com:80
Listen 192.168.195.10:80
#Listen 80
[root@localhost /]# iptables -F
[root@localhost /]# setenforce 0
[root@localhost /]# systemctl start httpd
[root@localhost /]# ls /var/log/httpd/ ##查看日志文件所在位置
access_log error_log
[root@localhost /]# cat /var/log/httpd/access_log #当网站被访问时,会产生日志文件
192.168.195.1 - - [07/Aug/2020:10:58:34 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.195.1 - - [07/Aug/2020:10:58:34 +0800] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"
192.168.195.1 - - [07/Aug/2020:10:58:34 +0800] "GET /noindex/css/open-sans.css HTTP/1.1" 200 5081 "http://192.168.195.10/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"
[root@localhost /]# vim /etc/httpd/conf/httpd.conf ##修改2个日志相关配置文件,作日志分割
ErrorLog "| /usr/sbin/rotatelogs -l logs/www.test.com.error_%Y%m%d.log 86400"
CustomLog "| /usr/sbin/rotatelogs -l logs/www.test.com.access_%Y%m%d.log 86400" combined
[root@localhost /]# systemctl restart httpd #重启服务
[root@localhost /]# cd /var/log/httpd/ #查看日志所在位置
[root@localhost httpd]# ls
access_log error_log www.test.com.error_20200807.log ##此日志文件为分割后的文件
[root@localhost httpd]# ls
access_log error_log www.test.com.access_20200807.log www.test.com.error_20200807.log
[root@localhost httpd]# date
2020年 08月 07日 星期五 11:07:51 CST
[root@localhost httpd]# date -s 09/05/20 ##更换下时间验证
2020年 09月 05日 星期六 00:00:00 CST
[root@localhost httpd]# date
2020年 09月 05日 星期六 00:00:01 CST
[root@localhost httpd]# systemctl restart httpd
[root@localhost httpd]# ls
access_log error_log www.test.com.access_20200807.log www.test.com.error_20200807.log www.test.com.error_20200905.log ##已经分割日志文件
第三方工具cronolog分割
- 源码编译安装cronolog工具
- 日志文件转交给cronolog分割处理
- 配置格式:
ErrorLog "| cronolog命令的绝对路径 [-l] 日志文件路径/网站名-error_%Y%m%d.log"
CustomLog "| cronolog命令的绝对路径 [-l] 日志文件路径/网站名-access_%Y%m%d.log" combined
实验:
[root@localhost /]# yum -y install httpd ##安装Apache服务
[root@localhost opt]# rz -E #将第三方工具包拉进来(自己去网站下,或者私信我,我发你)
rz waiting to receive.
[root@localhost opt]# ls
cronolog-1.6.2-14.el7.x86_64.rpm rh
[root@localhost opt]# rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm #安装
[root@localhost opt]# which cronolog #查看所在路径
/usr/sbin/cronolog
[root@localhost httpd]# vim /etc/httpd/conf/httpd.conf #修改配置文件
ErrorLog "| /usr/sbin/cronolog -l logs/www.test.com.error_%Y%m%d.log"
CustomLog "| /usr/sbin/cronolog -l logs/www.test.com.access_%Y%m%d.log" combined
[root@localhost httpd]# systemctl restart httpd #重启服务
[root@localhost httpd]# cd /var/log/httpd/
[root@localhost httpd]# ls #访问后查看日志文件
access_log error_log www.test.com.access_20200807.log www.test.com.error_20200807.log
2、AWStats日志分析
1、简介:
- Perl语言开发的开源日志分析系统
- 可用来分析Apache、Samba、Vsftpd、IIS等服务器的访问日志
- 结合crond计划任务,进行定期分析
2、部署实验
1>dns解析
[root@localhost /]# yum -y install bind
[root@localhost /]# vim /etc/named.conf
[root@localhost /]# vim /etc/named.rfc1912.zones
[root@localhost /]# cp -p /var/named/named.localhost /var/named/test.com.zone
[root@localhost /]# vim /var/named/test.com.zone
[root@localhost /]# systemctl start named
[root@localhost /]# vim /etc/httpd/conf/httpd.conf
[root@localhost /]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim index.html
[root@localhost /]# systemctl start httpd
2>安装配置AWStats
[root@localhost opt]# rz -E
[root@localhost opt]# tar zvxf awstats-7.6.tar.gz
[root@localhost opt]# ls
awstats-7.6 awstats-7.6.tar.gz cronolog-1.6.2-14.el7.x86_64.rpm rh
[root@localhost opt]# mv awstats-7.6 /usr/local/awstats
[root@localhost opt]# cd /usr/local/
[root@localhost local]# ls
awstats bin etc games include lib lib64 libexec sbin share src
[root@localhost local]# cd awstats/
[root@localhost awstats]# ls
docs README.md tools wwwroot
[root@localhost awstats]# cd tools/
[root@localhost tools]# ls
awstats_buildstaticpages.pl awstats_updateall.pl httpd_conf nginx xslt
awstats_configure.pl dolibarr logresolvemerge.pl urlaliasbuilder.pl
awstats_exportlib.pl geoip_generator.pl maillogconvert.pl webmin
[root@localhost tools]# ./awstats_configure.pl
##其他都回车
> /etc/httpd/conf/httpd.conf ##指配置文件路径
file (required if first install) [y/N] ? y
> www.test.com ##输入域名
A SIMPLE config file has been created: /etc/awstats/awstats.www.test.com.conf #配置文件位置
Press ENTER to finish...
[root@localhost tools]# vim /etc/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
# Order allow,deny
# Allow from all
Require all granted
</Directory>
[root@localhost tools]# cd /etc/awstats/
[root@localhost awstats]# ls
awstats.www.test.com.conf
[root@localhost awstats]# vim awstats.www.test.com.conf
LogFile="/var/log/httpd/access_log"
DirData="/var/lib/awstats"
[root@localhost awstats]# cd /var/lib/
[root@localhost lib]# mkdir awstats
[root@localhost lib]# systemctl restart httpd
此时访问页面数据不会改变,需要手动更新
3>执行日志分析,并设置cron计划任务
[root@localhost tools]# crontab -e
* /5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
4>优化网址地址
[root@localhost www]# cd html/
[root@localhost html]# ls
index.html
[root@localhost html]# vim count.html
[root@localhost html]# ls
count.html index.html
[root@localhost html]# vim count.html
<html>
<head>
<meta http-equiv=refresh content="0;url=http://www.benet.com/awstats/awstats.pl?config=www.benet.com">
</head>
<body></body>
</html>