您的位置:首页 > 运维架构 > Apache

LAMP架构(apache访问日志不记录静态文件,静态元素过期时间,apache日志切割)

2017-12-21 21:59 901 查看
一、apache访问日志不访问静态文件浏览器打开后按f12会会出现一个界面,点network,会出现很多请求,访问日志里会记载,有些静态的图片或者文件也会记载,太浪费磁盘空间和磁盘io。所以我们要让日志不记录静态文件[root@abc ~]# 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定义这些以gif.jgp,png,bmp.swf.js.css结尾的文件为env。在CustomLog "logs/111.com-access_log" combined 这一行的最后加上env=!img,表示把除了img的文件记录到日志里。检查语法错误并退出。
实验:curl -x127.0.0.1:80 111.com/sadaddas.png1 curl -x127.0.0.1:80 111.com/sadaddas.png 访问png1和png两个文件,看看日志会记录哪个?结果为:png不会被记录,png1会被记录,

或者上传一张以png结尾的图片在目录里,用浏览器访问,结果还是没有日志

二、apache访问日志切割

日志一直记录总有一天会把整个磁盘沾满,所以有必要让它自动切割,并删除老的日志文件。保证磁盘永远写不满,且更方便的管理日志vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf修改 ustomLog "logs/111.com-access_log" combined env=!img 为:CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_log" combined env=!imgrotatelogs是apache自带的日志切割工具。-l是为了让它以当前系统时间为准,如果不指定。他会以utc时间为基准。
而且根据时间日期还要让他文件有不同的名字。修改111.com-access_log为111.com-access%Y%m%d.log%Y%m%d分别表示年月日.还要规定什么时间去切割。一天是86400秒,日志名后面加上86400检查语法错误并退出。
实验:访问一个不是静态文件的网址内容[root@abc ~]# curl -x127.0.0.1:80 111.com/dsd.png1 发现日志目录里多了一个以当天时间为名的日志文件,里面记录的则是刚Curl的
[root@abc ~]# ls /usr/local/apache2.4/logs/111.com-access20171126.log 111.com-access_log 111.com-error_log abc.com abc.com-access_log access_log error_log httpd.pid[root@abc ~]# cat /usr/local/apache2.4/logs/111.com-access20171126.log 127.0.0.1 - - [26/Nov/2017:15:28:31 +0800] "GET HTTP://111.com/dsd.png1 HTTP/1.1" 404 206 "-" "curl/7.29.0"三、静态元素过期时间

配置静态文件元素过期时间浏览器访问网站图片时会把静态文件缓存在本地电脑里。这样下次访问就不用再去远程下载了。
实验:可以在目录里放一个图片,然后用浏览器去访问,且访问之前先F12打开管理页面,点开Network可以发现,第一次访问时,状态码为200,表示正正常第二次访问时,状态码为304 Not Modified 表示本地有缓存,且没有修改,所以不需要从新下载。这样可以节省带宽,但是没有规定失效日期且什么时候清理缓存。
修改: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>expire是apache的一个模块。设置过期时间检查apache有没有这个模块[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire如果没有,则需要到主配置文件里修改搜索expire在109行,把前面的注释符去掉保存退出检查语法错误并重启服务[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire expires_module (shared)apache加载了这个模块。

实验:ctrl+f5可以强制刷新,把本地缓存清空再访问图片是状态码显示为200,且下面有cache-control,过期时间为86400秒,也就是一天,还会告诉你过期日期的时间expires,但是时区是GMT.
[root@abc 111.com]# curl -x127.0.0.1:80 111.com/1.png -IHTTP/1.1 200 OKDate: Sun, 26 Nov 2017 08:04:11 GMTServer: Apache/2.4.28 (Unix) PHP/5.6.30Last-Modified: Sun, 26 Nov 2017 07:07:52 GMTETag: "7913-55edd71b4a200"Accept-Ranges: bytesContent-Length: 30995Cache-Control: max-age=86400Expires: Mon, 27 Nov 2017 08:04:11 GMTContent-Type: image/png
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  访问
相关文章推荐