一、 apache配置剖析
ApacheHTTPServer 的代码开源、跨平台、功能模块化、可灵活定制等诸多优点,不仅性能稳定,在安全性方面的表现也十分出色。
1.1 Apache 连接保持
每次在 HTTP 连接之前,需要先进行 TCP 连接,频繁地建立与关闭连接(三次握手、四次挥手)对于 HTTP 而言会消耗更多的内存与 CPU 资源。连接保持就可以通过同一个 TCP 连接发出多个请求,从而减少与多个连接相关的延迟。
Apache通过设置配置文件httpd-default.conf中相关的连接保持参数来开启与控制连接保持功能。
1.1.1 Apache连接保持相关参数
- KeepAlive:决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开。
- KeepAliveTimeout:表示一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间连接就会自动断开,从而避免客户端占用连接资源。
- MaxKeepAliveRequests:用于设置在一次长连接中可以传输的最大请求数量,超过此最大请求数量就会断开连接。
1.2 连接保持示例
我的实验建立在虚拟主机上,也可以讲连接保持的语句放在httpd的主配置文件/etc/httpd/conf/httpd.conf(yum安装,手工编译安装的位置是自己定义),虚拟主机的建立,我在上一篇博客中写过,博客链接为https://blog.youkuaiyun.com/kimowinter/article/details/107767756
[root@localhost extra]# vim /etc/httpd/conf/extra/vhost.conf
KeepAlive on
KeepAlive Timeout 600

1.3 Apache访问控制
Apache访问控制可以更好地控制对网站资源的访问,为特定的网站目录添加访问授权;常见的方式有客户机地址限制、用户授权限制两种范围控制方式。
1.3.1 客户机地址限制
通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。可用于< Location >、< Directory >、< Files >、< Limit >配置段中,使用 Require 配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。当 Require 配置项之后为“all”时,表示匹配任意地址。
- Requireall granted:允许所有主机访问;
- Requireall denied:拒绝所有主机访问;
- Requirelocal:仅允许本地主机访问;
- Require[not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问;
- Require[not] ip <IP 地址或网段列表>:允许或拒绝指定 IP 地址网络访问。
策略格式
<Directory "/usr/local/httpd/htdocs">
…… //省略部分内容
Require all granted
</Directory>
1.3.2 地址限制示例
[root@localhost ~]# cd /etc/httpd/conf/rxtra
[root@localhost extra]# vim vhost.conf
<VirtualHost 14.0.0.14:80>
DocumentRoot "/var/www/html/benet"
ErrorLog "logs/www.benet.com.error_log"
CustomLog "logs/www.benet.com.access_log" common
<Directory "/var/www/html">
<RequireAll>
Require no ip 14.0.0.100 ##限制14.0.0.100这个IP地址访问
Require all granted
</RequireAll>
</Directory>
</VirtualHost>
<VirtualHost 14.0.0.110:80>
DocumentRoot "/var/www/html/benet03"
ErrorLog "logs/www.benet03.com.error_log"
CustomLog "logs/www.benet03.com.access_log" common
<Directory "/var/www/html">
Require all granted
</Directory>
</VirtualHost>
在14.0.0.100地址虚拟win10主机中进行验证

1.4 用户授权限制
基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。
认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。
1.4.1 创建用户认证数据文件
httpd 的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用 户账号需要事先建立,并保存在固定的数据文件中。使用专门的 htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
使用 htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文 件。使用 htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文 件。
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# htpasswd -c /etc/httpd/conf/pwd webuser ##创建一个用户webuser
New password: ##设置密码
Re-type new password:
Adding password for user webuser
[root@localhost conf]# ls
extra httpd.conf magic pwd
[root@localhost conf]# cat pwd
webuser:$apr1$Udu58vF6$adUe6xS4bFP9d/wW2RllI1 ##产生的密钥文件
1.4.2 添加用户授权配置
- AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
- AuthType:设置认证的类型,Basic 表示基本认证。
- AuthUserFile:设置用于保存用户账号、密码的认证文件路径。
- requirevalid-user:要求只有认证文件中的合法用户才能访问。其中,valid-user 表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)。
[root@localhost conf]# vim extra/vhost.conf
<VirtualHost 14.0.0.110:80>
DocumentRoot "/var/www/html/benet03"
ErrorLog "logs/www.benet03.com.error_log"
CustomLog "logs/www.benet03.com.access_log" common
<Directory "/var/www/html">
AuthName "DocumentRoot"
AuthType basic
AuthUserFile /etc/httpd/conf/pwd ##指明密钥文件路径
Require valid-user
</Directory</

本文剖析Apache连接保持配置,包括参数详解与示例,访问控制策略,以及用户授权限制。同时,介绍了Apache日志分割方法,利用rotatelogs和cronolog工具实现日志管理。最后,展示了AWStats日志分析系统的部署与优化,实现网站访问数据的统计与监控。
最低0.47元/天 解锁文章
1581





