扩展: 

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

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

• 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录

1. 编辑虚拟机配置文件,增加访问日志不记录图片静态文件等规则:

[root@hao-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增加内容(针对访问日志过滤掉图片访问):

 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

clipboard.png

2. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 启动apache2.4/httpd

[root@hao-01 apache2.4]# /usr/local/apache2.4/bin/apachectl start

4. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl  graceful

5. 进入111网站目录下 :

[root@hao-01 ~]# cd /data/wwwroot/111.com

6. window上传一张图片当前目录下

[root@hao-01 111.com]# rz

clipboard.png

[root@hao-01 111.com]# ls

clipboard.png

7. curl命令访问111.com/图片名称,可以通(200 OK) :

[root@hao-01 111.com]# curl -x127.0.0.1:80 111.com/1.jpg -I

clipboard.png

8. Windows游览器中,不断刷新访问111.com/图片名称

111.com/1.jpg

clipboard.png

9. 查看访问日志有没有刚刚访问111.com/1.jpg jpg格式的访问日志 ???

[root@hao-01 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log

clipboard.png由上图可以看出,没有的,没有记录1.jpg的访问日志呢!

11.23 访问日志切割

• 日志一直记录总有一天会把整个磁盘占满,

所以有必要让它自动切割,并删除老的日志文件

1. 编辑虚拟机配置文件,把日志规定为以每天日期创建一个访问日志文件 :

[root@hao-01 ~]# 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=!imgclipboard.png

2. 检测虚拟机配置文件是否有错误 ?

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 重新加载配置文件(不会重启服务) :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl  graceful

4. curl命令,访问111.com网站下的123.php文件 :

[root@hao-01 ~]# curl -x127.0.0.1:80 111.com/123.php

5. 列出 apache访问日志目录下全部日志(可看到以日期命名的日志) :

[root@hao-01 ~]# ls /usr/local/apache2.4/logs/

clipboard.png

6. 查看刚刚访问后,生成的日期命名的日志内容(刚刚访问123.php):

[root@hao-01 ~]# cat /usr/local/apache2.4/logs/123.php/111.com-access_20170801.log

clipboard.png

11.24 静态元素过期时间

1. 修改虚拟主机配置文件定义静态图片元素过期时间

[root@hao-01 ~]# 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"

   ExpiresDefault "now plus 0 min"

</IfModule>

clipboard.png

2. 检测虚拟机配置文件是否有错误 :

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -t

3. 重新加载配置文件(不会重启服务)

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl graceful

4. 编辑apache主配置,搜索到expires这行(删除行首的注释符#号)

clipboard.png

5. 搜索apache,expire模块是否打开

[root@hao-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

clipboard.png

6. curl命令,访问111.com目录下的静态图片1.jpg :

(显示了当前访问时间和缓存静态过期时间,过期就会清理掉了)

[root@hao-01 ~]# curl -x127.0.0.1:80 111.com/1.jpg -I

clipboard.png