访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题,比如当有攻击时,是可以通过查看日志看到一些规律的。要配置hpd访问日志,首先要在主配置
文件中定义访问日志的格式,打开主配置文件
可以看到两个格式的日志,建议使用第一个,记录的信息会更全。‰为访问网站的IP;‰1为远程登录名,这个字段基本上为“-”;%u为用户名,当使用用户认证时,这个字段为认证的用户名;%t为时间;%r为请求的动作(比如用cur1-时就为HADE);%s为请求的状态码,写成%>s为最后的状态码;%b为传输数据大小;%%{User- Agent}为浏览器标识,对于这个日志格式
你可以自定义调整各个字段的位置,也可以额外增加其他字段,比如可以增加‰(请求耗费时间)在使用中笔者并没有更改过它,默认的日志格式就够用。
然后继续编辑虚拟主机配置文件:
保存配置文件后,测试语法/usr/local/apache2.4/bin/apachectl -t
重新加载配置文件:/usr/local/apache2.4/bin/apachectl graceful
使用curl访问一下
发现生成了日志
并且有相关的日志记录
配置访问日志不记录静态文件
一个网站会有很多元素,尤其是图片、js、css等静态的文件非常多,用户每请求一个页面就会访问诸多的图片、js等静态元素,这些元素的请求都会被记录在日志中。如果一个站点访问量很大,那么访问日志文件增长会非常快,一天就可以达到几GB。这不仅对于服务器的磁盘空间造成影响,更重要的是会影响磁盘的读写速度。笔者一开始也说了,访问日志很重要,我们又不能不记录。还好这些巨量的静态元素请求记录到日志里意义并不大,所以可以限制这些静态元素去记录日志,并且需要把日志按天归档,一天一个日志,这样也可以防止单个日志文件过大。配置如下:
//先定义了一个 image- request环境变量,把gif、jpg、png、bmp、swf、js、cs等格式的文件全部归类到 image- request里,后面的 eval image- request有用到一个“!”,这相当于取反了,意思是把image-request以外的类型文件记录到日志里。
保存配置文件后,测试语法/usr/local/apache2.4/bin/apachectl -t
重新加载配置文件:/usr/local/apache2.4/bin/apachectl graceful
下面来测试一下在日志中会不会记录静态元素
curl都测试一下
可以看到日志中只有index.txt的请求日志,但没有index.jpg的请求日志
去除了静态元素记录文件,日志文件会瘦身很多。
访问日志切割
日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件
更改虚拟主机配置如下:
正常应该 CustomLog后面为日志文件名,但在这里笔者用了一个管道,它会把日志内容交给后面的
rotatelogs命令处理。这个 rotetelogs为hpd自带切割日志的工具,它会把访问日志按我们定义的文
件名格式进行切割,其中86400单位是“秒”,相当于“一天”。
保存配置文件后,
保存配置文件后,测试语法/usr/local/apache2.4/bin/apachectl -t
重新加载配置文件:/usr/local/apache2.4/bin/apachectl graceful
使用curl访问一下
发现生成了日志
这里的123.com-access_20210521.log就是最新生成的文件,而且以后每天生成一个按日期命名的日志。
