新网Logo
首页>虚机资讯>

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

登录 注册

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

  • 来源:
  • 更新日期:2018-05-09

摘要:访问日志不记录静态文件 介绍 这部分相当于apache配置访问日志的延伸。上节我们说到配置访问日志,它会记录很多东西,如访客来源操作什么的。比如访客查看了一张图片,日志就会记录下“访客查看了这张图片”这个信息。有得网页,页就有几百张图片,这样都记录下来,放到我们服务器上负担太大,而且这些信息多余我们来说意义不大。所以这一节,我们的需求就是,在记录日志的同时,过忽略这些意义不大的文件日志

访问日志不记录静态文件 介绍

002UASMrzy7605pjKJv15&690.jpg

这部分相当于apache配置访问日志的延伸。上节我们说到配置访问日志,它会记录很多东西,如访客来源操作什么的。比如访客查看了一张图片,日志就会记录下“访客查看了这张图片”这个信息。有得网页,页就有几百张图片,这样都记录下来,放到我们服务器上负担太大,而且这些信息多余我们来说意义不大。所以这一节,我们的需求就是,在记录日志的同时,过忽略这些意义不大的文件日志

具体操作
1.修改虚拟主机的配置文件
因为我们做的是关于访问日志的设置,所以改改虚拟主机的配置文件就好了,因此如果你的虚拟主机配置有问题请找前面的课

#进入配置文件、如果 [root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf #配置文件如下 <VirtualHost *:80> DocumentRoot "/data/wwroot/111.com" ServerAlias www.example.com 211.com ServerName 111.com <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule> ErrorLog "logs/111.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/111.com-access_log" combined env=!img//该处最后一段表示不要img结尾的 </VirtualHost> 实验
访问网站的一张图片,不管有没有,然后查看访问日志

现在我们还没有重启服务,所以刚才配置的文件还没有生效

#访问网站,这个图片有没有都可以,显示404,因为我们本身就没有这个文件 [root@centos001 ~]# curl -x192.168.10.120:80 111.com/sdafh.jpg -I HTTP/1.1 404 Not Found Date: Wed, 27 Dec 2017 14:14:50 GMT Server: Apache/2.4.29 (Unix) PHP/7.1.6 Content-Type: text/html; charset=iso-8859-1 #查看访问日志 [root@centos001 ~]# tail /usr/local/apache2.4/logs/111.com-access_log #输出 192.168.10.120 - - [27/Dec/2017:22:14:50 +0800] "HEAD HTTP://111.com/sdafh.jpg HTTP/1.1" 404 - "-" "curl/7.29.0" #这里能看到访问日志里记录了,访客查看了图片的这个信息

2.检查并重启服务

[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

测试
用再次访问图片,检查访问日志有没有记录。因为我们的配置文件写了不要jpg结尾的文件,后面的到的结果当然是没有了


访问日志切割 目的:日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件 简单来说就是 每天把日志归档 到一个文件下,方便定期删除 方法 修改虚拟机配置文件 1.进入虚拟机修改文件

#进入配置文件 [root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf #修改的部分,保存并退出 CustomLog ""|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access__%Y%m%d.log 86400" combined env=!img


解说

|/usr/local/apache2.4/bin/rotatelogs 指定一个叫rotatelogs的日志切割工具(httpd自带的);
-l意为以当前系统的时间为基准,如若不指定将会以UTC(美国时间)的时间去指定,中国是CST(date能看到);
access__%Y%m%d.log 86400为日志的名字,%Y%m%d为年月日,86400为一天总的秒数(写的时候前面往加空格,后面就没有生成新的文件)

2.检查读写并重启服务,

[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf [root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

3.测试 查看访问日志有没有被切割,也就是生成有日期的文件

#访问一个php文件,图片什么的没有记录 [root@centos001 ~]# curl -x192.168.10.120:80 111.com/123.php #下面ls前面没有]是因为我们进入了网站文件中,也能看到生成了新的文件 123.com[root@centos0ls /usr/local/apache2.4/logs/ 111.com-access__20171228.log 111.com-error_log abc.com-error_log error_log 111.com-access_log abc.com-access_log access_log httpd.pid ### 配置静态元素过期时间 - 介绍 浏览器访问网站的图片时会把静态的文件缓存在本地电脑里,这样下次再访问时就不用去远程下载了,能让我们访问速度更快 - 目的 缓存总不能一直缓存吧,所有就有了“缓存过期时间”这个概念,这个过期时间实在服务上定义的,下面就将介绍怎么设置这个时间 -准备 1.在配置之前先看个东西,首先下载一个静态元素(图片什么的)到我们的服务器上 ```#进入服务器目录 [root@centos001 ~]# cd /data/wwroot/111.com/ [root@centos001 111.com]# ls 123.php index.php #传一张图片到虚拟服务器上 [root@centos001 111.com]# rz #这里名字叫qq.png,最好先改个简单点名字 [root@centos001 111.com]# ls 123.php index.php qq.png

2.用浏览器访问我们的图片,按f12后状态码为200;当我们刷新后状态码就变304了,304的意思是检测到x我们访问的图片没有被修改过,所以就不用在重服务器上下载图片了。但是这样图片就一直缓存在我们电脑里了,所以接下来将给图片配置失效时间

 

修改配置文件 1.增的配置文件如下

<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>

 2.检查读写、加载模块后重启服务

#检查读写 [root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK #检查是否有加载模块,明显没有 [root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expire 编辑主配置文件并加载模块

#进入主配置文件 [root@centos001 111.com]# vim /usr/local/apache2.4/conf/httpd.conf #重启服务 [root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl graceful #检查加载模块成功 [root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expire expires_module (shared) 测试 1.重新进入浏览器,访问图片,f12查看状态码,当然可以F5刷新一哈
现在能看到过期时间为1天,下面也有过期的具体时间
 2.当然我们也能在虚拟机上直接访问

[root@centos001 111.com]# curl -x192.168.10.120:80 111.com/qq.png -I HTTP/1.1 200 OK Date: Wed, 27 Dec 2017 17:43:36 GMT//当前时间 Server: Apache/2.4.29 (Unix) PHP/7.1.6 Last-Modified: Wed, 27 Dec 2017 16:41:20 GMT ETag: "e01-5615511a9ac00" Accept-Ranges: bytes Content-Length: 3585 Cache-Control: max-age=86400 //周期 Expires: Thu, 28 Dec 2017 17:43:36 GMT //过期时间 Content-Type: image/png