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

[toc]

一 访问日志不记录静态文件

mark

很多网站大多为静态网页,网页内部的图片、css文件等同样有其网址链接,如果不设置,这些无效的信息也将被存入访问日志中,会导致访问日志文件大小快速增加,占用大量存储空间。我们可以通过设置不记录某些文件来减少无效信息,节省内存资源。

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

[root@xavi ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
     ServerAdmin [email protected]
    DocumentRoot "/data/wwwroot/xavi.com"
    ServerName www.xavi.com
    ServerAlias xavi.com 123.com
       
    #以下为定义变量:将所有关于图片,css,js的请求定义为变量img     
  SetEnvIf Request_URI ".*\.gif$" img // 定义元素为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
     ErrorLog "logs/xavi.com-error_log"
    CustomLog "logs/xavi.com-access_log" common env=!img //指定非img的文件才记录日志。
   
</VirtualHost>

将所有访问图片的请求定义为变量img,在访问记录(日志)中将其排除即可。重新加载后使用curl访问img变量中所指定格式的文件内容时将不会产生访问记录。img是变量。

重新加载配置文件:

/usr/local/apache2.4/bin/apachectl -t
Syntax OK
 /usr/local/apache2.4/bin/apachectl graceful

再访问网站下的图片文件,查看日志已不在记录图片的访问日志了。

二、 访问日志切割

随着网站访问量的增大,我们网站的访问日志文件也会变得很大,为了保持磁盘空间,方便访问日志的管理(备份、删除历史日志等。),我们可以进行日志切割,每天的访问日志独立切割出来。

在conf/extra/httpd-vhosts.conf/ 配置文件下进行设定:

1.把虚拟主机配置文件改成如下:

[root@xavi ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
     ServerAdmin [email protected]
    DocumentRoot "/data/wwwroot/xavi.com"
    ServerName www.xavi.com
    ServerAlias xavi.com 123.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
 ErrorLog "logs/xavi.com-error_log"
    
    
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/xavi.com-access_%Y%m%d.log 86400"  combined env=!img
// 用命令的形式把日志切割
</VirtualHost>

mark

切割命令解析 CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/123test-access_log_%Y%m%d_log 86400" combined env=!img

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秒

curl访问后有日志文件生成

mark

crontab -e

[root@xavi ~]# ls /usr/local/apache2.4/logs/xavi.com-access_20180307.log
/usr/local/apache2.4/logs/xavi.com-access_20180307.log
[root@xavi ~]# cat !$
cat /usr/local/apache2.4/logs/xavi.com-access_20180307.log
127.0.0.1 - - [07/Mar/2018:23:14:45 +0800] "GET HTTP://xavi.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"

11.24 静态元素过期时间

浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了。

但是缓存多久呢?如果网站图片更新了呢,那么应该访问新图片才是。所以这就涉及到静态文件缓存时长的问题了,也就是“缓存过期时间”。

mark

1.启用expires模块

[root@xavi logs]# vim /usr/local/apache2.4/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so   //去掉#


2.修改虚拟主机配置文件

[root@xavi logs]# 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"

// 按文件类型来设置自定义过期时间
// acess表示从访问时间开始
// now表示按当前时间开始
// plus在前面的时间基础上加上
// 1 hours/days 表示文件的生命周期
// 例如 acess plus 1 days 表示该文件从访问的时间开始1天内有效,无需重新获取

    ExpiresDefault "now plus 0 min"    
//除上述外的文件指定默认的过期时间

3.重新加载-t,grancful查看,检查模块是否加载

[root@xavi logs]# /usr/local/apache2.4/bin/apachectl -M | grep -i expire   //检查模块是否加载
 expires_module (shared)

4.测试

4.1 ctrl+F5 强制刷新

mark

mark

猜你喜欢

转载自my.oschina.net/u/3960917/blog/2877946