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

访问日志不记录静态文件

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

  1. 修改虚拟主机配置文件:
[root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

参考配置修改如下:
 <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias 111.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
</VirtualHost>

更改配置文件后需要重新加载配置文件:
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
修改完后,示例如下:

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

解释说明:

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

验证如下:

[root@gary-tao local]# curl -x127.0.0.1:80 111.com/alskdda.jpg -I
HTTP/1.1 404 Not Found
Date: Thu, 21 Dec 2017 06:39:14 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@gary-tao local]# !tail    //未更新配置前日志是有jpg文件。
tail /usr/local/apache2.4/logs/111.com-access_log 
127.0.0.1 - - [20/Dec/2017:20:36:35 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [20/Dec/2017:20:39:23 +0800] "HEAD http://111.com/123.php HTTP/1.1" 403 -
127.0.0.1 - - [20/Dec/2017:20:40:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
[root@gary-tao local]# curl -x127.0.0.1:80 111.com/alskdda.png -I  
HTTP/1.1 404 Not Found
Date: Thu, 21 Dec 2017 06:49:10 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@gary-tao local]# tail /usr/local/apache2.4/logs/111.com-access_log //更新配置日志后没有png文件。
127.0.0.1 - - [20/Dec/2017:20:40:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
172.16.111.1 - xie [21/Dec/2017:14:43:17 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:43:18 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
模拟一张图片实际测试:
[root@gary-tao ~]# cd /data/wwwroot/111.com/ //cd到目录下面
[root@gary-tao 111.com]# ls
123.php  index.php
[root@gary-tao 111.com]# rz  //上传一张图片,如果不能使用rz请安装yum install -y lrzsz

[root@gary-tao 111.com]# ls //已上传文件 
123.php  index.php  QQ截图20171221141829.png
[root@gary-tao 111.com]# curl -x127.0.0.1:80 111.com/QQ截图20171221141829.png -I  //运行下程序
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 07:08:49 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Thu, 21 Dec 2017 06:18:31 GMT
ETag: "91ab-560d3ab3fbbc0"
Accept-Ranges: bytes
Content-Length: 37291
Content-Type: image/png

[root@gary-tao 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log  //发现日志并没有图片png的记录
127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
172.16.111.1 - xie [21/Dec/2017:14:43:17 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:43:18 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - - [21/Dec/2017:15:09:15 +0800] "GET /QQ HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
[root@gary-tao 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf  //为了实验需要,先把env=!img去掉
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl graceful //重新加载
[root@gary-tao 111.com]# curl -x127.0.0.1:80 111.com/QQ截图20171221141829.png -I  //运行图片
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 07:25:46 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Thu, 21 Dec 2017 06:18:31 GMT
ETag: "91ab-560d3ab3fbbc0"
Accept-Ranges: bytes
Content-Length: 37291
Content-Type: image/png

[root@gary-tao 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log  //查看下例就有png图片的日志出来
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
172.16.111.1 - xie [21/Dec/2017:14:43:17 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:43:18 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - - [21/Dec/2017:15:09:15 +0800] "GET /QQ HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:15:25:46 +0800] "HEAD HTTP://111.com/QQ\xe6\x88\xaa\xe5\x9b\xbe20171221141829.png HTTP/1.1" 200 - "-" "curl/7.29.0"

测试完成后把刚才去掉的env=!img添加到配置文件里去。
添加上图片后可以上浏览器上打开,示例如下:

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


访问日志切割

日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件,防止磁盘写满,用日期记录日志方便管理及查找。还要写一个任务计划,定期清理超过时间的日志。

  1. 修改虚拟主机配置文件,给日志做一个切割。
[root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

参考配置修改如下:
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias 111.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 "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>

更改配置文件后需要重新加载配置文件:
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@gary-tao 111.com]# ls /usr/local/apache2.4/logs/
111.com-access_log  111.com-error_log  abc.com-access_log  abc.com-error_log  access_log  error_log  httpd.pid
[root@gary-tao ~]# curl -x127.0.0.1:80 111.com/123.php
123.php[root@gary-tao ~]# 
[root@gary-tao ~]# ls /usr/local/apache2.4/logs/
111.com-access_log  111.com-access_20171221.log  abc.com-error_log  error_log
111.com-error_log   abc.com-access_log           access_log         httpd.pid
[root@gary-tao ~]# ls /usr/local/apache2.4/logs/111.com-access_20171221.log 
/usr/local/apache2.4/logs/123.com-access_20171221.log
[root@gary-tao ~]# cat !$
cat /usr/local/apache2.4/logs/123.com-access_20171221.log
127.0.0.1 - - [21/Dec/2017:16:47:53 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:53:56 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:54:06 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"

[root@gary-tao ~]# curl -x127.0.0.1:80 111.com/123.php.png -I //访问图片的
HTTP/1.1 404 Not Found
Date: Thu, 21 Dec 2017 08:57:55 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@gary-tao ~]# cat /usr/local/apache2.4/logs/111.com-access_20171221.log //查看日志并没有记录
127.0.0.1 - - [21/Dec/2017:16:47:53 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:53:56 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:54:06 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
配置文件修改完后,示例如下:

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

解释说明:

这里的123.com-access_20171221.log就是新生成的日志,而且以后会每天生成一个按日期命名的日志。

静态元素过期时间

在日志里会发现有一个状态码304,这个状态码表示该文件已经缓存到用户的电脑里了(浏览器访问网站的图片时会把静态的文件缓存在本地电脑里),这样下次再访问时就不用去远程下载了,而是直接访问用户电脑里面的缓存。这样做的目的是降低服务器的资源消耗,还可以提升用户访问网站的速度。那到低可以缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对,这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。

1.编辑虚拟主机配置文件

在虚拟机主配置文件添加如下配置:
在111.com模块添加如下:

<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>
解释说明:

这部分配置用到了mod_expires模块,相关配置内容并不难理解,通过字面也可以大致猜到其含义。这里gif、jpeg、png格式的文件过期时长为1天,css、js、flash格式的文件过期时长为2小时,其他文件过期时长为0,也就是不缓存。

示例图

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

[root@gary-tao 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK  //添加完成后测试语法是否有没错误
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expires  //没有任何输出,说明当前httpd不支持expires模块,所以需要悠配置文件,打开该模块
[root@gary-tao 111.com]# vim /usr/local/apache2.4/conf/httpd.conf //搜索expires关键讯,找到下面这行
#LoadModule expires_module modules/mod_expires.so //把本行的最前面 的#删除,保存退出
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl graceful  //重新加载配置
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expires  //下面有expires输出,说明正确加载expires模块。
 expires_module (shared)

2.使用curl来测试效果:

[root@gary-tao 111.com]# curl -x127.0.0.1:80 111.com/qq.png -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 11:54:14 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Thu, 21 Dec 2017 06:18:31 GMT
ETag: "91ab-560d3ab3fbbc0"
Accept-Ranges: bytes
Content-Length: 37291
Cache-Control: max-age=86400
Expires: Fri, 22 Dec 2017 11:54:14 GMT
Content-Type: image/png
说明:

可以看到max-age=86400,这说明jpg的图片将缓存86400秒,也就是一天。

转载于:https://blog.51cto.com/taoxie/2053107

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值