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


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

原因:如果不去限制,那么会消耗大量的磁盘空间和IO,而且这些文件无意义。


编辑http-vhost配置文件:

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

在CustomLog之上加入内容,并且在CustomLog行加入!img,表示符合以上条件的都不加入到日志中

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志

(img可以用其他代替,只要和上方定义的名称一致即可,如下图)


2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_02


因为没有重置配置,所以配置暂未生效,此时访问以.jpg结尾的请求

[root@localhost ~]# curl -x127.0.0.1:80 111.com/dsafas.jpg -I
HTTP/1.1 404 Not Found
Date: Sat, 03 Mar 2018 11:26:57 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

查看日志文件,发现该访问已经被记录

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

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_03

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


重置配置之后,再次访问一个.jpg结尾的请求

[root@localhost ~]# curl -x127.0.0.1:80 111.com/hhhhhh.jpg -I
HTTP/1.1 404 Not Found
Date: Sat, 03 Mar 2018 11:29:10 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1


查看日志文件,因为配置文件生效之后,就阻挡了以.jpg结尾的请求被记录到日志中去,因此,看不到该条访问记录。

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

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_04


我们再去进行更多访问的请求

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_05


查看日志发现,仅仅记录了以.xxx结尾的访问,而之前.gif和之后.css则没有记录,正式因为配置文件中将这类访问给定义为不需要记录的。

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_06

访问/data/wwwroot/111.com/中的一张图片,不会被记录到日志中

[root@localhost ~]# curl -x127.0.0.1:80 111.com/gakki.jpg -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 11:51:24 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Sat, 03 Mar 2018 11:51:11 GMT
ETag: "d275-56680b58abf85"
Accept-Ranges: bytes
Content-Length: 53877
Content-Type: image/jpeg

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_07


如果把配置文件中 env=!img 去掉,那么日志将会重新将原先不记录的访问进行记录

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_09

保存后,浏览器访问111.com/gakki.jpg,那么该记录会被记录进日志中

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_102018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_11




11.23 访问日志切割


·日志一直记录总有一天会把整个磁盘占满,所以有必要让它自动切割,并删除老的日志文件

作用:防止磁盘写满


需要用到 apache 自带的 rotatelogs 切割工具


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

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_12

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

-l                                                                 以当前系统时间为基准,不然就以UTC为基准,中国是CST

logs                                                              logs目录下

111.com-access_%Y%m%d.log                 文件名 年 月 日

86400                                                         规定切割时间,单位是秒,86400是一天


访问111.com/123.php,会生成以日期为名称的日志文件

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_静态元素_13

生成的新日志文件内有最近的访问记录

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_14




11.24 静态元素过期时间


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

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_15

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

检查expaire模块是否打开,没有打开的话,需要去主配置文件中打开

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep expire
[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_16

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep expire
expires_module (shared)

(expire模块打开并配置成功)

[root@localhost ~]# curl -x127.0.0.1:80 111.com/aragaki.jpg

2018-3-5 10周4次课  访问日志不记录静态文件、访问日志切割、静态元素过期时间_访问日志_17

(信息表明缓存最大保存时间以及失效GMT格林尼治时间,和北京时间8小时时差)

(只有在打开expire模块时才能看到此信息)



如有错误,欢迎指正,互相学习,共同进步!