1. 程式人生 > >2018-3-5 10周4次課 訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間

2018-3-5 10周4次課 訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間

訪問日誌 靜態元素

11.22 訪問日誌不記錄靜態文件


·網站大多元素為靜態文件,如圖片、css、js等,這些元素可以不用記錄

原因:如果不去限制,那麽會消耗大量的磁盤空間和IO,而且這些文件無意義。


編輯http-vhost配置文件:

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

在CustomLog之上加入內容,並且在CustomLog行加入!img,表示符合以上條件的都不加入到日誌中

技術分享圖片

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


技術分享圖片


因為沒有重置配置,所以配置暫未生效,此時訪問以.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

技術分享圖片

[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

技術分享圖片


我們再去進行更多訪問的請求

技術分享圖片


查看日誌發現,僅僅記錄了以.xxx結尾的訪問,而之前.gif和之後.css則沒有記錄,正式因為配置文件中將這類訪問給定義為不需要記錄的。

技術分享圖片

訪問/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

技術分享圖片


如果把配置文件中 env=!img 去掉,那麽日誌將會重新將原先不記錄的訪問進行記錄

技術分享圖片技術分享圖片

保存後,瀏覽器訪問111.com/gakki.jpg,那麽該記錄會被記錄進日誌中

技術分享圖片技術分享圖片




11.23 訪問日誌切割


·日誌一直記錄總有一天會把整個磁盤占滿,所以有必要讓它自動切割,並刪除老的日誌文件

作用:防止磁盤寫滿


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


把虛擬主機配置文件改成如下:

技術分享圖片

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,會生成以日期為名稱的日誌文件

技術分享圖片

生成的新日誌文件內有最近的訪問記錄

技術分享圖片




11.24 靜態元素過期時間


·瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏,這樣下次再訪問時就不用去遠程下載了

技術分享圖片

[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

技術分享圖片

[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

技術分享圖片

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

(只有在打開expire模塊時才能看到此信息)



如有錯誤,歡迎指正,互相學習,共同進步!

2018-3-5 10周4次課 訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間