目录
一、访问日志不记录静态文件
二、访问日志切割
三、静态元素过期时间
一、访问日志不记录静态文件
一个网站会有很多元素,尤其是图片、js、css等静态的文件非常多,用户每请求一个页面就会访问诸多的图片、js等静态元素,这些元素的请求都会被记录在日志中。这些元素是静态文件,全都记录的话会然过日志文件太大,浪费磁盘空间,所有没必要记录,我们可以设置配置文件将它们排除掉。
编辑配置文件如下:
···
···
ErrorLog "logs/www.ming1.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
CustomLog "logs/www.ming1.com-access_log" combined env=!img
</VirtualHost>
先定义了一个img环境变量,把gif、jpg、png、bmp、swf、js、css等格式的文件全部归类到img里,后面的env=!img有用到一个“!”,这相当于取反了,意思是把img以外的类型文件记录到日志里。
- 测试
修改的配置文件在重新加载前没有生效,此时关于.jpg的访问是被记录的:
[root@minglinux-01 ~] curl -x127.0.0.1:80 www.ming1.com/aab.jpg -I
HTTP/1.1 404 Not Found
Date: Fri, 16 Nov 2018 14:51:09 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@minglinux-01 ~] tail -n2 /usr/local/apache2.4/logs/www.ming1.com-access_log
192.168.162.1 - - [16/Nov/2018:22:12:40 +0800] "GET /admin.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
127.0.0.1 - - [16/Nov/2018:22:51:09 +0800] "HEAD HTTP://www.ming1.com/aab.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
重载配置文件后.jpg的访问记录就不会记录到日志了:
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@minglinux-01 ~] /usr/local/apache2.4/bin/apachectl graceful
[root@minglinux-01 ~] curl -x127.0.0.1:80 www.ming1.com/aabbbbbb.jpg -I
HTTP/1.1 404 Not Found
Date: Fri, 16 Nov 2018 15:02:38 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@minglinux-01 ~] tail -n2 /usr/local/apache2.4/logs/www.ming1.com-access_log
192.168.162.1 - - [16/Nov/2018:22:12:40 +0800] "GET /admin.html HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
127.0.0.1 - - [16/Nov/2018:22:51:09 +0800] "HEAD HTTP://www.ming1.com/aab.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
其他为被禁用的格式也是回被记录的,如下:
[root@minglinux-01 ~] curl -x127.0.0.1:80 www.ming1.com/aabbbbbb.jpg1 -I
HTTP/1.1 404 Not Found
Date: Fri, 16 Nov 2018 15:04:51 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@minglinux-01 ~] tail -n2 /usr/local/apache2.4/logs/www.ming1.com-access_log
127.0.0.1 - - [16/Nov/2018:22:51:09 +0800] "HEAD HTTP://www.ming1.com/aab.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
127.0.0.1 - - [16/Nov/2018:23:04:51 +0800] "HEAD HTTP://www.ming1.com/aabbbbbb.jpg1 HTTP/1.1" 404 - "-" "curl/7.29.0"
二、访问日志切割
日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文文件。
把虚拟主机配置文件httpd-vhosts.conf修改成如下:
···
···
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/www.ming1.com-access_%Y%m%d.log 86400" combined env=!img
rotetelogs为httpd自带切割日志的工具,它会把访问日志按我们定义的文
件名格式进行切割,其中86400单位是“秒”,相当于“一天”。
测试:
[root@minglinux-01 /usr/local/apache2.4/logs] ls
access_log www.ming1.com-access_log wwww.ming2.com-access_log
error_log www.ming1.com-error_log
httpd.pid www.ming2.com-error_log
[root@minglinux-01 /usr/local/apache2.4/logs] /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@minglinux-01 /usr/local/apache2.4/logs] /usr/local/apache2.4/bin/apachectl graceful
[root@minglinux-01 /usr/local/apache2.4/logs] ls
access_log www.ming1.com-access_log wwww.ming2.com-access_log
error_log www.ming1.com-error_log
httpd.pid www.ming2.com-error_log
[root@minglinux-01 /usr/local/apache2.4/logs] curl -x127.0.0.1:80 www.ming1.com/aabbcc.jpg1 -I
HTTP/1.1 404 Not Found
Date: Fri, 16 Nov 2018 15:20:51 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@minglinux-01 /usr/local/apache2.4/logs] ls
access_log www.ming1.com-access_20181116.log www.ming2.com-error_log
error_log www.ming1.com-access_log wwww.ming2.com-access_log
httpd.pid www.ming1.com-error_log
这里的www.ming1.com-access_20181116.log就是新生成的日志,而且以后会每天生成一个按日期命名的日志。
做日志切割的目的一是防止磁盘被日志写满,二是方便管理日志文件。
我们可以制定一个任务计划,指定定期删除部分日志,防止磁盘被日志写满。
三、静态元素过期时间
浏览器访问网站时会把静态的文件(图片、CSS、js等)缓存在本地电脑里,这样下次再访问时就不用下载了,被缓存文件在电脑上的缓存时长由服务器定义,若服务器不定义,则电脑不会清空这些缓存文件。
-
第一次从浏览器访问图片:
第一次访问
-
再次访问:
再次访问
可以看到第二次访问时状态码变成了304 Not Modified,服务器没有定义本地缓存失效的时间,只要浏览器检测到本地缓存的图片没有被修改,那么状态码就一直是304。
- 配置文件定义静态文件缓存失效时间
编辑httpd-vhosts.conf文件增加以下内容:
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] 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>
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] /usr/local/apache2.4/bin/apachectl -t
Syntax OK
- 打开expire模块
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] vim /usr/local/apache2.4/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so //将该行前面的#号删掉
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] /usr/local/apache2.4/bin/apachectl -M|grep expire
expires_module (shared)
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] /usr/local/apache2.4/bin/apachectl graceful //重载配置文件
- curl测试:
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] curl -x127.0.0.1:80 www.ming1.com/1.png -I
HTTP/1.1 200 OK
Date: Fri, 16 Nov 2018 16:15:18 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Last-Modified: Sun, 09 Sep 2018 10:02:50 GMT
ETag: "5a1a2-5756d57e40680"
Accept-Ranges: bytes
Content-Length: 369058
Cache-Control: max-age=86400 //缓存保留时长
Expires: Sat, 17 Nov 2018 16:15:18 GMT //缓存失效时间
Content-Type: image/png //文件类型
- 注销expires_module后
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] vim /usr/local/apache2.4/conf/httpd.conf
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] /usr/local/apache2.4/bin/apachectl -M|grep expire
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] /usr/local/apache2.4/bin/apachectl graceful
[root@minglinux-01 /usr/local/apache2.4/htdocs/ming1] curl -x127.0.0.1:80 www.ming1.com/1.png -I
HTTP/1.1 200 OK
Date: Fri, 16 Nov 2018 16:19:08 GMT
Server: Apache/2.4.37 (Unix) PHP/5.6.30
Last-Modified: Sun, 09 Sep 2018 10:02:50 GMT
ETag: "5a1a2-5756d57e40680"
Accept-Ranges: bytes
Content-Length: 369058
Content-Type: image/png
此时返回信息中就没有了缓存保留时长和缓存失效时间。
扩展
apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960
apache只记录指定URI的日志 http://ask.apelearn.com/question/981
apache日志记录客户端请求的域名 http://ask.apelearn.com/question/1037
apache 日志切割问题 http://ask.apelearn.com/question/566
网友评论