Apache配置剖析与日志管理
Apache连接保持
相关参数:
KeepAlive(默认On)
是否打开连接保持,Off关闭,On打开
KeepAliveTimeout(默认5秒)
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
MaxKeepAliveRequests(默认100)
一次长连接能够传输的最大请求数量
访问控制
访问控制的作用:
控制对网站资源的访问
为特定的网站目录添加访问授权
访问控制方式
根据客户端地址控制访问
使用Require配置项实现访问控制,按序限制
常用语法:
- Require all granted ##允许所有人访问
- Require all denied ##拒绝所有人访问
- Require local ##允许本地用户访问
- Require [not] host <主机名或域名列表> ##允许或者禁止某些主机或域名访问
- Require [not] ip <IP地址或网段列表> ##允许或者禁止某些IP地址或网段访问
在使用 not 禁止访问时要将其置于<RequireAll></RequireAll>容器中,并在容器中设置相应的限制策略
用户授权限制
新建授权用户数据文件
cd /usr/local/httpd/
bin/htpasswd -c /usr/local/httpd/conf/.awspwd zjj
New password: ####根据提示设置密码
Re-type new password: ####根据提示设置密码
Adding password for user zjj
cat /usr/local/httpd/conf/.awspwd ####确认用户数据文件
zjj:$apr1$L53Ws/Y2$3L4xhs4zZKDbJb.9p1fNg.
添加用户授权配置
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/httpd/htdocs">
AuthName "DocumentRoot"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
Require valid-user
</Directory>
systemctl restart httpd ####重启服务使配置生效
AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
2、AuthType:设置认证的类型,Basic 表示基本认证。
3、AuthUserFile:设置用于保存用户账号、密码的认证文件路径。
4、require valid-user:要求只有认证文件中的合法用户才能访问。其中,valid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 zjj)
使用浏览器浏览192.168.10.11输入 zjj 密码,验证结果。
日志分割
随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,如果不对日志进行分割,那么如果日志文件占用磁盘空间很大的话势必会将整个日志文件删除,这样也丢失了很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等。
另外,如果服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义很大,我们会将 Apache 的日志进行按每天的日期自动分割。
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
-l:表示使用本地时间
/error_log:日志名称
%Y-%m-%d:年-月-日
86400:表示日志分隔的间隔是1天,单位是秒
浏览网页之后,查看日志文件
cd /usr/local/httpd/logs/
ls -lh
第三方工具cronolog
解压缩安装包后安装
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install
vim /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
- 与自带的rotatelogs工具相比,配置换了cronolog命令的绝对路径,少了-l和86400
AWStats日志分析
开启Apache主配置文件的cgi模块
vi /usr/local/httpd/conf/httpd.conf
<IfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
安装AWStats软件包
cd /opt
mkdir /usr/local/awstats
tar zxf awstats-7.6.tar.gz -C /usr/local/awstats
vi /etc/hosts
192.168.10.13 www.zjj.com
vi /usr/local/httpd/conf/httpd.conf
ServerName www.zjj.com
cd /usr/local/awstats/tools
./awstats_configure.pl
根据提示信息进行交互
修改awstats程序主配置文件
vi /etc/awstats/awstats.www.zjj.com.conf
LogFile="/usr/local/httpd/logs/access_log" ##修改日志文件位置
DirData="/var/lib/awstats" ##建立每次抓取的数据存放位置
mkdir /var/lib/awstats ##手动创建抓取数据存放目录
带common格式的日志无法抓取,需清空
cd /usr/local/httpd/logs
rm -f *log
vi /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
Require all granted ##添加此配置
</Directory>
/usr/local/awstats/tools/awstats_updateall.pl now
打开软件图形化界面即可查看日志分析。