使用场景:一个网页的不少静态图片、css/js文件,若是记录到日志中会使日志特别大,但这些图片文件等属于静态文件,没有记录的必要,所以咱们能够修改配置文件设置不记录指定的类型的访问日志;咱们平常须要的是看用户访问过哪些页面,而不是看这些页面的哪些图片javascript
一、修改虚拟主机配置文件css
# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.confjava
在文件中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
apache
上面命令中引号内容是正则表达式,img属于前述内容的标记vim
再在CustomLog行末尾加入内容env=!img ,表示只要符合上面条件的请求都不会记录到日志里浏览器
二、从新加载配置文件缓存
在从新加载前,配置文件还未生效,咱们先来实验看下服务器
从上图咱们能够看到在未配置的状况下,默认是会记录jpg文件的访问日志的app
下面咱们来加载更新后的配置文件
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
此时再来测试
上图能够看到并未增长新的日志记录
固然上面实验的图片并不是真实存在的,咱们也能够放一张真实存在的图片来访问实验,从本机传输huawei.jpg
如今咱们再来访问新放进来的这张图片,发现并无记录日志
目的:通常状况下,都应该对日志作切割,一方面是防止日志写满磁盘,二是让咱们更方便的管理日志,须要配合日志过时时间使用
一、编辑配置文件
# 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分钟
二、从新加载配置文件
# /usr/local/apache2.4/bin/apachectl -t
# /usr/local/apache2.4/bin/apachectl graceful
三、访问查看下
从上图能够看到,在通过一次访问后,logs目录下新增了一个以今天时间命名的日志文件,其内容就是
刚才访问留下的日志
设置静态元素过时时间后,当用户访问某个静态元素超过必定时间,浏览器就会自动将下载到本地的这些静态元素清空,若是不设置,可能不会清空,或者浏览器按照本身的设定来清空
先来作个小测试:
浏览器第一次访问下图链接,返回状态码为200 OK
浏览器第二次访问同一链接,返回状态码为304 Modified没有修改,它表示浏览器检测到所访问的这个图片从下载后到如今没有修改过,所以不须要从服务器从新下载
一、增长配置
在虚拟主机配置文件中加入如下内容:
<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表示不过时或者不理会过时时间
二、检测配置文件语法错误
# /usr/local/apache2.4/bin/apachectl -t
三、查看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模块已经开启
四、验证
刷新原来的网页,能够看到状态码为200 O,K,缓存保留时间为1天,过时时间,
再次刷新网页,状态码及过时时间发生了变化,缓存保留时间仍是1天
推荐连接
apache日志记录代理IP以及真实客户端IP http://ask.apelearn.com/question/960
apache只记录指定URI的日志 http://ask.apelearn.com/question/981
apache日志记录客户端请求的域名 http://ask.apelearn.com/question/1037
apache 日志切割问题 http://ask.apelearn.com/question/566