访问日志不记录静态文件

一个网站会有很多元素,尤其是图片、js、css等静态文件非常多,每个用户请求一个页面都会访问诸多的图片,这些元素都会被记录在日志中,如果一个网站访问量很大,那么这些日志会增长的非常快,这样不仅会对服务器的磁盘造成影响,更会影响磁盘的读写速度。所以我们要限制这些惊天文件的记录。

具体方法如下:
编辑配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
然后在ErrorLog "logs/111.com-error_log"的下面编辑如下文件
SetEnvIf Request_URI "..gif$" img
SetEnvIf Request_URI ".
.jpg$" img
SetEnvIf Request_URI "..png$" img
SetEnvIf Request_URI ".
.bmp$" img
SetEnvIf Request_URI "..swf$" img
SetEnvIf Request_URI ".
.js$" img
SetEnvIf Request_URI "..css$" img
“.
.xxx$”其中xxx代表元素的格式,我们在编辑的时候只要将元素的格式以正则表达式表示出来就可以。
然后在 CustomLog "logs/123.com-access_log" combined加上nv=!img(排除带img标识的文件。)
检查语法错误-t 重新加载配置文件 , graceful

访问日志切割

日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件。

首先打开配置文件,
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
然后更改 CustomLog这一段配置,首先我们先指定一个工具,rotatelogs,他是apache自带的切割工具,它存在于/usr/local/apache2.4/bin/中。其中参数-l是要它以当前系统时间为准,如果不加-l,它则以UTC时间为准。
然后在系统文件名access_加一个变量,%Y%m%d.log这是以年月日的格式命名的。既然我们是按照一天的时间来切割,然后我们换算成秒的话就是86400秒。日期格式可以用分隔符隔开。

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img

检查语法错误 -t 重新加载配置文件 graceful

静态元素过期时间

浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了,而直接去电脑访问电脑中的缓存,那么到底能缓存多久呢?我们是可以控制这个时间,这也叫做缓存过期时间。

首先我们打开配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
然后将配置文件放到配置文件中
<IfModule mod_expires.c> ExpiresActive on //打开该功能的开关
ExpiresByType image/gif "access plus 1 days" (单位是可以变化的)
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType text/css "now plus 2 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min"
重新加载配置文件 -t, graceful

然后我们去查看模块有没有打开
/usr/local/apache2.4/bin/apachectl -M|grep expire
如果没有打开的话,我们去编辑主配置文件,然偶找到
LoadModule expires_module modules/mod_expires.so这个文件,并将前面的“#”删掉。
然后重新加载
/usr/local/apache2.4/conf/httpd.conf graceful
再一次查找模块
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -M|grep expires
expires_module (shared)(已经加载模块成功)
重新加载配置文件 -t, graceful