Apache的配置与应用
Apache的配置
Apache配置剖析
Apache连接保持相关参数
- KeepAlive
是否打开连接保持,OFF关闭,ON打开 - KeepAliveTimeout
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开 - MaxKeepAliveRequests
一次连接能够传输的最大请求数量
配置文件在 /usr/local/httpd/conf/extra/httpd-default.conf
# Apache连接保持
[root@lamp ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
KeepAlive On
# 设置是否打开连接保持功能,后面接0FF表示关闭,接ON表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能
MaxKeepAliveRequests 100
# 用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接,最大值的设置决定于网站中网页的内容,一般设置数量会多于网站中所有的元素
KeepAliveTimeout 5
# 设置来自同一个客户端一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。
Apache访问控制
Apache访问控制
- 作用
控制对网站资源的访问
为特定的网站目录添加访问授权 - 常用访问控制方式
客户机地址限制
用户授权限制
基于客户端地址的访问控制
使用Require配置项实现访问控制,按先后顺序限制
可用于Location、Directory、Files、Limit 配置段中
Require配置项的常见语法
[root@lamp conf]# vim /usr/local/httpd/conf/httpd.conf
Require all granted # 允许所有
Require all denied # 拒绝所有
Require local # 只允许本地
Require [not] host <主机名或域名列表>
Require [not] ip <IP地址或网段列表>
注意:使用not禁止访问时要将其置于<RequireAll> </RequireAll>容器中并在容器中指定相应的限制策略
# 例如 除了ip 188 其他都允许
<RequireAll>
Require all granted
Require not ip 192.168.188.188
</RequireAll>
基于用户授权限制
设置验证用户访问权限
# 在需要设置的<Directory> 标签里添加
[root@lamp conf]# 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>
# 创建用户认证数据库
[root@lamp httpd]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.awspwd maomao
New password:
Re-type new password:
Adding password for user maomao
[root@lamp conf]# cat .awspwd
maomao:$apr1$M5cTVGnd$Rp.wkaO07a6AO8Bq8OaWj0
我们访问网站 测试是否需要验证
输入账户和密码之后成功访问
Apache日志管理
随着网站的访问量增加,默认情况下Apache的单个日志文件也会越来越大
- 日志文件占用磁盘空间很大
查看相关信息不方便
对日志文件进行分割
- Apache自带rotatelogs分割工具实现
第三方工具cronolog分割
日志分割
我们就使用apache自带的rotatelogs分割工具进行日志分割
日志有两种记录格式
common
- 通用日志格式(Common Log Format)
这是一个典型的记录格式:
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
combined
如果需要通过一些log统计程序如awstats来查看apache log 则为获取更详细的日志输入当采用 combined方式
组合日志格式(Combined Log Format)
另一种常用的记录格式是组合日志格式,形式如下:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{
Referer}i\" \"%{
User-agent}i\"" combined
CustomLog log/access_log combined
# 再次编辑主配置文件
# 注释 ErrorLog "logs/error_log"
ErrorLog "| /usr/local/httpd/bin/rotatelogs -l /usr/local/httpd/logs/error_%Y%m%d.log 86400"
# 注释 CustomLog "logs/access_log" common
CustomLog "| /usr/local/httpd/bin/rotatelogs -l /usr/local/httpd/logs/wordpree_%Y%m%d.log 86400" combined
[root@lamp logs]# ls
error_20210324.log httpd.pid wordpree_20210324.log
# 动态查看日志变化
[root@lamp logs]# tail -f wordpree_20210324.log
有访问记录!
AWStats日志分析
AWStats日志分析系统
- Perl语言开发的一款开源日志分析系统
- 可用来分析Apache、 Samba、Vsftpd、IIS等服务器的访问日志
- 信息结合crond等计划任务服务,可对日志内容定期进行分析
AWStats安装
我使用的是awstats-7.6版本
[root@lamp awstats]# tar xf awstats-7.6.tar.gz
# 执行tools目录下的awstats_configure.pl 简化创建过程
[root@lamp tools]# ./awstats_configure.pl
Do you want to continue setup from this NON standard directory [yN] ? y
# 本实验的httpd主配置文件路径为/usr/local/httpd/conf/httpd.conf
Config file path ('none' to skip web server setup):
> /usr/local/httpd/conf/httpd.conf
# 确定创建新的站点配置文件
-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ?
# 指定要统计的目标站点
Your web site, virtual server or profile name:
> www.xiaotian.com
# 编辑配置文件,指定用来分析的日志文件和指定存放统计数据目录
[root@lamp tools]# mkdir -p /var/lib/awstats
[root@lamp awstats]# vim /etc/awstats/awstats.www.xiaotian.com.conf
LogFile="/usr/local/httpd/logs/wordpree_20210318.log"
# 使用awstats_updateall.pl脚本,可以更新所有站点
[root@lamp tools]# ./awstats_updateall.pl
----- awstats_updateall 1.0 (build 20140126) (c) Laurent Destailleur -----
awstats_updateall launches update process for all AWStats config files (except
awstats.model.conf) found in a particular directory, so you can easily setup a
cron/scheduler job. The scanned directory is by default /etc/awstats.
Usage: awstats_updateall.pl now [options]
Where options are:
-awstatsprog=pathtoawstatspl
-configdir=directorytoscan
-excludeconf=conftoexclude[,conftoexclude2,...] (Note: awstats.model.conf is always excluded)
[root@lamp tools]# echo $?
0
# 通过crontab 服务可以设置任务计划
[root@lamp tools]# crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
# 修改主配置文件
vim /etc/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>
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
# 最后写日志网页
cd /usr/local/httpd/htdocs/
vim awb.html
<html>
<head>
<meta http-equiv=refresh content="0;
url=http://www.xiaotian.com/awstats/awstats.pl?config=www.xiaotian.com">
</head>
<body></body>
</html>
# 使用浏览器
http://192.168.188.188/awstats/awstats.pl?config=www.xiaotian.com