5月30日任务

时间:2022-06-07 12:57:07
11.22 访问日志不记录静态文件
11.23 访问日志切割

11.24 静态元素过期时间

访问日志不记录静态文件

5月30日任务

F12可以查看元素,点到Network再F5刷新网页发现加载以下内容,都会被记录到访问日志中

5月30日任务

像.png等等图片无需保存到日志中,防止日志文件过大,如下图:

把所有带gif,jpg等等定义为img,Log最后过滤不含img的日志 env=!img

5月30日任务

-t, graceful让配置生效

5月30日任务

发现jpg,png的访问没有被记录,除此之外的jpg1被写入日志

rz上传一张图片测试

图片可以访问成功:

5月30日任务

在Linux中,并没有记录,因为做了标记限制png图片不被写入日志中

5月30日任务

如果把env=!img去掉,则会被记录,如下图

5月30日任务

访问日志切割

5月30日任务

rotateslog是httpd自带的切割工具,加入虚拟主机配置文件中,检查语法并重新加载

5月30日任务

 并重新命名log 加上%Y%m%d,默认以一天为例,86400单位为秒,即1天

5月30日任务

用curl命令,让其记录到访问日志中,如下图,Logs目录下出现以年月日为命名的新日志,cat后正好时之前curl访问的记录 (注意此处不可以访问图片,因为已经被作为静态元素被过滤掉了)

5月30日任务

总结:日志切割方便管理和分析,如分析两天前的日志数量可以直接调取当天的.log文件,同时注意需要加一个任务计划指定删除超过N天的老旧log,以保证磁盘空间一直处于有空间状态

静态元素过期时间

5月30日任务

通常,用户在访问一个网站时会把静态元素缓存到本地,一遍下一次访问不用再远程下载, 节省带宽,增加访问速度,而缺点是没有定义缓存的清除时间,长久会造成缓存垃圾的堆积;这时候可以用expires.c模块实现自定义删除缓存的时间周期,如下图所示:

把原有的.jpg改名后重新访问该图片,F12发现返回的状态码是200,再次刷新变成304(not modified),表示此图片第一次访问时已被缓存到本地,第二次访问无需远程下载(修改)

5月30日任务

5月30日任务

expires模块打开&定义

5月30日任务

5月30日任务

5月30日任务

测试:

先ctl +F5 (强制刷新,把本地缓存清空)

①浏览器中:回到200 (cache max规定最大为1天)

5月30日任务

然后再刷新回到304

5月30日任务

②curl 

5月30日任务

如果把expires模块注释掉,如下图,cache control定义的时间消失

5月30日任务

扩展 
apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960 
apache只记录指定URI的日志 http://ask.apelearn.com/question/981
apache日志记录客户端请求的域名 http://ask.apelearn.com/question/1037
apache 日志切割问题 http://ask.apelearn.com/question/566