摘要:摘要: 11.22 访问日志不记录静态文件 11.23 访问日志切割 11.24 静态元素过期时间 扩展 apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960 apache只记录指定URI的日志 http://ask.apelearn.com/question/981 apache日志记录客户端请求的域名 http://a
使用场景:一个网页的很多静态图片、css/js文件,如果记录到日志中会使日志特别大,但这些图片文件等属于静态文件,没有记录的必要,因此我们可以修改配置文件设置不记录指定的类型的访问日志;我们日常需要的是看用户访问过哪些页面,而不是看这些页面的哪些图片
1、修改虚拟主机配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在文件中CustomLog行上方加入以下内容:
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
上面命令中引号内容是正则表达式,img属于前述内容的标记
再在CustomLog行末尾加入内容env=!img ,表示只要符合上面条件的请求都不会记录到日志里
2、重新加载配置文件
在重新加载前,配置文件还未生效,我们先来实验看下
从上图我们可以看到在未配置的情况下,默认是会记录jpg文件的访问日志的
下面我们来加载更新后的配置文件
#/usr/local/apache2.4/bin/apachectl -t
#/usr/local/apache2.4/bin/apachectl graceful
此时再来测试
上图可以看到并未增加新的日志记录
当然上面实验的图片并非真实存在的,我们也可以放一张真实存在的图片来访问实验,从本机传输huawei.jpg
现在我们再来访问新放进来的这张图片,发现并没有记录日志
二 访问日志切割目的:一般情况下,都应该对日志做切割,一方面是防止日志写满磁盘,二是让我们更方便的管理日志,需要配合日志过期时间使用
1、编辑配置文件
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
加入下图框中的内容
|/usr/local/apache2.4/bin/rotatelogs 指定日志切割工具,rotatelogs这个工具是apache2.4自带的日志切割工具
-l 表示以系统的时间为准,如果不指定,它就会以UTC/CST(美国时间/中国时间)格式的时间为基准
%Y%m%d 表示年月日
86400 表示切割间隔时间为86400s,即1分钟
2、重新加载配置文件
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
3、访问查看下
从上图可以看到,在经过一次访问后,logs目录下新增了一个以今天时间命名的日志文件,其内容就是
刚才访问留下的日志
三 静态元素过期时间设置静态元素过期时间后,当用户访问某个静态元素超过一定时间,浏览器就会自动将下载到本地的这些静态元素清空,如果不设置,可能不会清空,或者浏览器按照自己的设定来清空
先来做个小测试:
浏览器第一次访问下图连接,返回状态码为200 OK
浏览器第二次访问同一连接,返回状态码为304 Modified没有修改,它表示浏览器检测到所访问的这个图片从下载后到现在没有修改过,因此不需要从服务器重新下载
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 hours"
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>
ExpiresActive on表示打开此功能
ExpiresByType表示类型
ExpiresDefault表示其他类型文件的过期时间
now plus 0 min表示不过期或者不理会过期时间
2、检测配置文件语法错误
# /usr/local/apache2.4/bin/apachectl -t
3、查看expire模块是否开启
# /usr/local/apache2.4/bin/apachectl -M |grep expire
上图表示没有打开,此时需要编辑主配置文件打开expire模块
# vim /usr/local/apache2.4/conf/httpd.conf
去掉expires模块前面的#号,如下
重新加载配置文件
# /usr/local/apache2.4/bin/apachectl graceful
再来查看expire模块已经开启
4、验证
刷新原来的网页,可以看到状态码为200 O,K,缓存保留时间为1天,过期时间,
再次刷新网页,状态码及过期时间发生了变化,缓存保留时间还是1天
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28