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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问日志不记录静态文件配置访问日志切割配置静态元素过期时间相关的知识,希望对你有一定的参考价值。

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

一个网站会有很多元素,尤其是图片、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

以上是关于访问日志不记录静态文件配置访问日志切割配置静态元素过期时间的主要内容,如果未能解决你的问题,请参考以下文章

四十访问日志不记录静态文件访问日志切割静态元素过期时间

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

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

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

访问日志不记录指定文件类型 访问日志切割 静态元素过期时间

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