lamp(六)——访问日志更多配置

11.22 访问日志不记录静态文件
11.23 访问日志切割
11.24 静态元素过期时间

屏蔽一些元素记录到日志

网站大多元素为静态文件,如图片、css、js等,访问一个页面可能记录一堆日志。这样即不方便查看日志,也造成日志占磁盘空间。这些元素可以不用记录。把虚拟主机配置文件改成如下:


   DocumentRoot "/data/wwwroot/www.123.com"
   ServerName www.123.com
   ServerAlias 123.com
   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
   CustomLog "logs/123.com-access_log" combined env=!img

结构其实很简单,定义标签,然后在访问日志那一行配置设置env=!img。img是标签名,可以自定义。记得设置完重新加载配置文件。

mkdir /data/wwwroot/www.123.com/images创建目录,并在这目录下上传一个图片。然后curl -x127.0.0.1:80 -I 123.com/images/123.jpg测试,查看日志tail /usr/local/apache2.4/logs/123.com-access_log是否屏蔽了jpg的标签。

日志切割

日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件
把虚拟主机配置文件改成如下:


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

rotatelogs是apache自带的日志切割工具,参数-l指定使用系统时间(中国使用cst),不指定的话使用utc。最后重新加载配置文件,curl做一个访问。然后查看是否生成新日志, ls /usr/local/apache2.4/logs

静态元素过期时间

浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了。除了图片,还有css等静态元素,其过期时间是在server端定义的,做好过期时间可以有效降低服务器压力。

状态码304,就是没有改变。如果不设置过期时间就会一直保存在本地。这样不利于网站提供服务,比如后期静态元素变化,但是用户很有可能只能查看到之前的内容。

过期时间配置需要expires_module模块,记得在httpd.conf开启,然后在虚拟主机的配置文件增加如下内容


   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"

curl测试,可以看到“cache-control: max-age”字样。使用浏览器(chrome、firefox),按f12也可以查看到过期时间相关信息。

你可能感兴趣的:(lamp(六)——访问日志更多配置)