一访问日志不记录静态文件
很多网站大多为静态网页, 网页内部的图片 CSS 文件等同样有其网址链接, 如果不设置, 这些无效的信息也将被存入访问日志中, 会导致访问日志文件大小快速增加, 占用大量存储空间我们可以通过设置不记录某些文件来减少无效信息, 节省内存资源
那么具体怎么操作呢? 按照下面例子操作即可:
步骤: 编辑虚拟主机配置文件
- [root@zlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
- ErrorLog "logs/123test-error_log"
- #以下为定义变量: 将所有关于图片, css,js 的请求定义为变量 img
- 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
- # "env=!img" 表示非 img 变量意思是: 不记录关于变量 img 的请求日志
- CustomLog "logs/123test-access_log" combined env=!img
- [root@zlinux ~]# /usr/local/apache2/bin/apachectl -t
- Syntax OK
- [root@zlinux ~]# /usr/local/apache2/bin/apachectl graceful
将所有访问图片的请求定义为变量 img, 在访问记录 (日志) 中将其排除即可重新加载后使用 curl 访问 img 变量中所指定格式的文件内容时将不会产生访问记录
二访问日志切割
随着服务器的运行, 访问日志文件大小也将会不断变大, 日志一直记录总有一天会把整个磁盘占满, 所以有必要让它自动切割, 并删除老的日志文件
步骤 1: 编辑虚拟主机配置文件
- [root@zlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
- CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/123test-access_log_%Y%m%d_log 86400" combined env=!img
- # /usr/local/apache2.4/bin/rotatelogs 工具是 apache 自带的分割日志的工具
- # -l 参数按当前系统时间为基准进行切割(我国为 CST), 否则默认 UTC
- # %Y%m%d 表示年月日, 这样会每天记录一个带日期的日志文件, 更方便
- # 86400(s)表示每天都进行切割, 一天 24 小时等于 86400 秒
- [root@zlinux ~]# /usr/local/apache2/bin/apachectl -t
- Syntax OK
- [root@zlinux ~]# /usr/local/apache2/bin/apachectl graceful
做几次加以访问, 查看具体效果:
步骤 2: 定期删除老日志
- [root@zlinux logs]# crontab -e // 指定计划任务, 此仅为本人测试使用, 供参考
- 11 21 * * * /usr/bin/find /usr/local/apache2/logs/ -regex ".*/123test-access_log_.*_log" -mmin +5 -exec rm -f {} \;
- // 说明 1: 每天 21 点 11 分删除五分钟前日志文件
- // 说明 2: 已经在 httpd-vhosts.conf 中设置每一分钟切割一次日志
- // 说明 3: 使用 - regex 时有一点要注意:-regex 不是匹配文件名, 而是匹配完整的文件名 (包括路径) 例如, 当前目录下有一个文件 "abar9", 如果你用 "ab.*9" 来匹配, 将查找不到任何结果, 正确的方法是使用 ".*ab.*9" 或者 ".*/ab.*9" 来匹配这里 / logs / 表示当前目录, 所以后面日志格式写成.*/123test-access_log_.*_log
三设置静态文件失效时间
浏览器访问网站的图片时会把静态的文件缓存在本地电脑里, 这样下次再访问时就不用去远程下载了
但是缓存多久呢? 如果网站图片更新了呢, 那么应该访问新图片才是所以这就涉及到静态文件缓存时长的问题了, 也就是缓存过期时间
步骤 1: 启用 expires 模块
- [root@zlinux logs]# vim /usr/local/apache2/conf/httpd.conf
- LoadModule expires_module modules/mod_expires.so // 去掉 #
- [root@zlinux logs]# /usr/local/apache2/bin/apachectl -M | grep -i expire // 检查模块是否加载
- expires_module (shared)
步骤 2: 修改虚拟主机配置文件
- [root@zlinux logs]# vim /usr/local/apache2/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"
- # // 按文件类型来设置自定义过期时间
- # // acess 表示从访问时间开始
- # // now 表示按当前时间开始
- # // plus 在前面的时间基础上加上
- # // 1 hours/days 表示文件的生命周期
- # // 例如 acess plus 1 days 表示该文件从访问的时间开始 1 天内有效, 无需重新获取
- ExpiresDefault "now plus 0 min"
- # // 除上述外的文件指定默认的过期时间
Apache(httpd)配置 -- 日志控制与静态元素过期时间配置
来源: http://www.bubuko.com/infodetail-2516744.html