码迷,mamicode.com
首页 > 其他好文 > 详细

访问日志不记录静态文件、配置访问日志切割、配置静态元素过期时间

时间:2018-05-30 19:28:51      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:Linux

访问日志不记录指定类型的文件

一个网站会有很多元素,尤其是图片、js、css等静态的文件非常多,用户每请求一个页面就会访问诸多的图片、js等静态元素,这些元素的请求都会被记录在日志中。如果一个站点访问量很大,那么访问日志文件增长会非常快,这不仅对于服务器的磁盘空间造成影响,更重要的是会影响磁盘的读写速度。实际上这些巨量的静态元素请求记录到日志里的意义并不大,所以可以限制这些静态元素去记录日志,并且需要把日志按天归档,一天一个日志,这样也可以防止单个日志文件过大。

编辑虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

在配置文件里添加如下内容

    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/mm.com-access_log" combined env=!img

技术分享图片

SetEnvIf 设置匹配条件
img 定义的别名
env=!img 排除别名是ima的项
先定义一个img环境变量,把gif、jpg、png、bmp、swf、js、css等格式的文件全部归类到img里,后面的env=!imge有用到一个“!”,这相当于取反了,意思是把img以外的类型文件记录到日志里。

配置完成后需要检查配置文件以及重新加载配置文件才会生效
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

我们访问一个.jpg文件,看日志会不会进行记录
curl -x192.168.71.131:80 -I 521.com/ai.jpg
tail /usr/local/apache2.4/logs/mm.com-access_log

技术分享图片

可以看到我们访问.jpg时,日志是不会记录的

我们再随便访问一个没有添加进去的格式文件,比如.jpga(随便填的),看看有没有日志信息

技术分享图片

可以看到有日志有访问记录


配置访问日志切割

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

编辑虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

编辑Customlog这一行进行编辑
CustomLog "|/usr/local/apache.2.4/bin/rotatelogs -l logs/mm.com-access_log_%Y%m%d.log 86400" combined env=!img

/usr/local/apache2.4/bin/rotatelogs 这时apache自带的一个日志切割文件
-l 表示按照本机时间进行,如果不加那么表示使用UTC时间,中国使用的是CST时间
%Y%m%d.log 表示年月日,日志切割的时候后缀名会加上年月日,
86400 表示每过86400秒就切割一次,86400就是一天的时间

技术分享图片

检查配置是否正确,重新加载apache配置(一定要养成这个好习惯)
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

技术分享图片

设置完日志切割后,记得添加一个任务计划,多久删除一下以前的日志,不然我们日志切割防止磁盘写满就没意义了


静态元素过期时间

我们知道在使用浏览器浏览网页时,浏览器会把网页资料快取(Cache)下来储存在本机端,用以加快下回浏览相同网页时不必再重新由网站上下载,进 而有加速的效果.使用mod_expires模组来加速网页浏览,这里所谓的”加速”,其实是利用”mod_expires”的功能,来设定网页文件的过 期时间,加长网页文件被浏览器快取(Cache)保存的时间.如此一来,只要网页文件的过期时间未到,浏览器就会引用快取的资料,而不用花时间再去下载网 站上的资料.另一方面带给站长的好处是,可以减少浏览者对网站的流量耗用(例如有些虚拟主机有限制网站可使用的流量)

编辑虚拟主机配置文件
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"
</IfModule>

    内容说明:

使用<IfModule></IfModule>来包夹指令可以避免在mod_expires模组没有启用的情况下还去执行.如果mod_expires模组确定已经启用,那不写<IfModule></IfModule>也没关係.
ExpiresActive on: 启用mod_expires功能,相对的Off就是关闭功能
ExpiresByType : ExpiresByType指令是依照不同的网页文件型态来做过期时间设定
access : 过期起算时间有三种,分别是access、now 以及modification.其中access与now意义相同,而modification指的是网页文件的”最后编辑时间”.所以如果要以档桉的最 后编辑时间起算,可以写成这样,”modification plus 10 days”.而时间的指定也很简单,就是英文单字(years、months、weeks、days、hours、minutes、seconds).例 如,可以写成这样,”access plus 1 month 15 days 2 hours”
ExpiresDefault: 表示其它的设置默认,不用管

检查expire模块是否打开,如果没有打开需要在Apache主配置文件中开启
检查模块是否加载
/usr/local/apache2.4/bin/apachectl -M |grep expire expires_module (shared)

如果模块未加载,编辑主配置文件
vim /usr/local/apache2.4/conf/httpd.conf

搜索关键字:,找到这一行:
#LoadModule expires_module modules/mod_expires.so

去掉前面的# 保存即可

配置完成后需要检查配置文件以及重新加载配置文件才会生效
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

访问日志不记录静态文件、配置访问日志切割、配置静态元素过期时间

标签:Linux

原文地址:http://blog.51cto.com/13658403/2122155

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!