web服务器集群|Apache连接保持、访问控制、日志分割以及日志分析


文章目录

  • 前言
  • 一、Apache连接保持
  • 二、Apache 的访问控制
    • 1. 创建用户认证数据文件
    • 2.添加用户授权配置
    • 3.验证用户访问权限
  • 三、Apache 日志分割
    • 1.Apache 自带 rotatelogs 分割工具
    • 2.使用第三方工具 cronolog 分割
  • 四、Apache日志分析
  • 总结

前言 【web服务器集群|Apache连接保持、访问控制、日志分割以及日志分析】Apache HTTP Server 之所以受到众多企业的青睐,得益于其源代码开源,跨平台、功能模块化、可灵活定制等优点,其其不仅性能稳定,在安全性方面的表现也十分出色
一、Apache连接保持
  • HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源
  • 解决办法是HTTP连接保持。就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗
  • 对于 HTTP/1.1,就是尽量地保持客户端的连接,通过一个连接传送多个 HTTP 请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低资源开销
  • Apache 通过设置配置文件 httpd-default.conf 中相关的连接保持参数来开启与控制连接保持功能
① KeepAlive 决定是否打开连接保持功能,后面接 OFF 表示关闭,接 ON 表示打开。可以根据网站的并发请求量决定是否打开,即在高并发时打开连接保持功能,并发量不高时关闭此功能。
② KeepAliveTimeout 表示一次连接多次请求之间的最大间隔时间,即两次请求之间超过该时间,连接就会自动断开,从而避免客户端占用连接资源
③ 在一次长连接中可以传输的最大请求数量可以使用 MaxKeepAliveRequstes 设置,超过此最大请求数量就会断开连接。最大值的设置决定干网站中网页的内容,一般设置数量会多于网站中所有的元素
二、Apache 的访问控制
  • 作用:为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权
  • 常用访问控制方式:客户机地址显示+用户授权限制
1. 创建用户认证数据文件
cd /usr/local/httpd/bin[root@www bin]#./htpasswd -c /usr/local/httpd/user xjj#创建xjj用户数据文件,此处有-c #-c选项表示新建用户数据文件,缺省时则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码 New password:#输入用户密码 Re-type new password:#确认密码 Adding password for user xjj[root@www bin]#./htpasswd/usr/local/httpd/user xjj1 #创建xjj1用户数据文件,此处没有-c New password: Re-type new password: Adding password for user xjj1 #-c指定的文件位置为/usr/local/httpd/目录下的任意目录中都可以[root@www bin]#cat /usr/local/httpd/user #查看用户是否添加成功

2.添加用户授权配置
vim /usr/local/httpd/conf/httpd.conf ------在末行添加以下内容-------- Alias /test /var/www/html/test AuthName "Hello!" AuthType Basic AuthUserFile /usr/local/httpd/user Require valid-user #authgroupfile /usr/local/httpd/conf/group #Require user xjj #Require group xjj 解释: Alias /test /var/www/html/test#设置虚拟目录的根目录,/test为虚拟目录名称#设置虚拟目录配置区域 AuthName "Hello!"#定义受保护的领域名称,会在认证对话框中显示 AuthType Basic#设置认证的类型,Basic表示基本认证 AuthUserFile /usr/local/httpd/user#设置用于保存用户账号和密码的认证文件的路径 Require valid-user#开启用户认证,只有认证文件中的合法用户才能访问 #authgroupfile /usr/local/httpd/conf/group#设置用于保存组账号和密码的认证文件的路径 #Require user xjj#仅允许指定用户访问 #Require group xjj#仅允许指定组访问

3.验证用户访问权限
[root@www bin]#mkdir -p /var/www/html/test [root@www bin]#echo "hello world" > /var/www/html/test/index.html [root@www bin]#systemctl restart httpd.service http://192.168.126.11:80/test

三、Apache 日志分割
  • 随着网站的访问量越来越大,默认情况下 Apache 服务器产生的单个日志文件也会越来越大,如果不对日志进行分割,那么日志文件占用磁盘空间很大的话势必会将整个日志文件删除,这样会丢失很多对网站比较宝贵的信息,而这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等。
  • 另外,服务器遇到故障时,运维人员要打开日志文件进行分析,打开的过程会消耗很长时间,也势必会增加处理故障的时间。因此管理好这些海量的日志对网站的意义重大,我们会将 Apache 的日志按每天的日期进行自动分隔。
1.Apache 自带 rotatelogs 分割工具
  • 使用 Apache 自带 rotatelogs 分割工具,将 Apache 的日志进行按每天的日期自动分割
vim /usr/local/httpd/conf/httpd.conf #275行,修改 ErrorLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400" #分剖错误日志#305行,修改 CustomLog "| /usr/local/bin/rotatelogs -l /var/log/httpd/accesss_%Y%m%d.log 86400"combined #分割访问日志#开头的|为管道符号。 #-l选项表示使用本地时间为时间基准 #86400表示一天,即每天生成一个新的日志文件

mkdir /var/log/httpd#创建分剖后的日志文件保存目录systemctl restart httpd ls /var/log/httpd#查看日志文件

2.使用第三方工具 cronolog 分割
  • 先解压源码包
tar zxvf cronolog-1.6.2.tar.gz cd cronolog-1.6.2

  • 然后编译安装
./configure make && make install

  • 修改 Apache 的虚拟主机 httpd-vhost.conf 文件,将上面的内容修改为下面所示的内容:
ServerAdmin administrator@kqn.cn DocumentRoot "/usr/local/apache/htdocs" ServerName www.test.com ErrorLog "/usr/local/sbin/cronolog /usr/local/apachelogs/www.test.com-error _%Y%m%d.log" CustomLog " /usr/local sbin/cronolog /usr/local/apachelogs/www.test.com-access_ %Y%m%d.log"combined

  • 重启 Apache 服务,查看日志是否被分割
注意:Apache 写日志是根据文件的 i 节点,而不是文件名,所以有时候我们将Apache 日志文件重命名了,如果不重启 Apache 它还是会往重命名后的文件里面写入东西。
四、Apache日志分析
  • AWStats 是使用 Perl 语言开发的一款开源日志分析系统,它不仅可以用来分析Apache 网站服务器的访问日志,也可以用来完成自动化的日志统计与分析工作
  • 安装 AWStats 软件包
cd /opt tar zxvf awstats-7.6.tar.gz mv /opt/awstats-7.6/usr/local/awstats

  • 执行日志分析,并设置 cron 计划任务
    由于 Web 日志文件的内容是在不断地更新的,为了及时反馈网站的访问情况,日志分析工作也要定期、自动的执行,通过 crond 服务可设置计划任务,一般建议每五分钟执行一次日志分析任务
systemctl restart httpd.service cd /usr/local/awstats/tools/ ./awstats_updateall.pl now#更新数据(根据站点配置文件指定的日志文件路径)#设置定时任务进行刷新 crontab -e */5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now systemctl start crond systemctl enable crond

总结
  • Apache 通过设置配置文件中相关的连接保持参数来开启与控制连接保持功能
  • httpd 服务通过 Order、Allow from 、Deny from 配置项实现客户机地址访问控制
  • 为网站目录设置用户授权时,需先通过htpasswd 工具创建用户认证数据文件。
  • httpd 服务器的日志文件包括访问日志 access_log 与错误日志 error_log

    推荐阅读