1. 程式人生 > >四十二、訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間

四十二、訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間

訪問日誌 靜態元素過期時間

一、訪問日誌不記錄靜態文件

訪問日誌:可以記錄網站的訪問情況,還可以在網站有異常發生時幫助我們定位問題,比如當有攻擊時,是可以通過查看日誌看到一些規律的。

靜態元素:一個網站有很多元素,比如圖片、js、css等靜態文件,這些就是靜態元素。QQ瀏覽器,按F12可以查看它的靜態元素,Network。

要配置httpd訪問日誌,首先需要虛擬主機配置文件中定義訪問日誌的格式,打開虛擬主機配置文件:

# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

</IFModule>

ErrorLog "logs/111.com-error_log"

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

格式定義在訪問日誌customlog的上面。

img:標簽,標記。img除外的都記錄進來。這些以gif、jpg等結尾的做個標記叫img。這個標簽名字隨意,叫abc也行。

解析:SetEnvIf Request_URI ".*\.gif$" img

如果訪問的Request_URI,除gif結尾的img的都記錄進來。

解析:env=!img

上面的以img都不會記錄到日誌裏,排除這些img。

# /usr/local/apache2.4/bin/apachectl graceful

# curl -x192.168.93.130:80 111.com/lsjdlf.jpg1 -I

# curl -x192.168.93.130:80 111.com/lsjdlf.jpg -I

# tail -3 /usr/local/apache2.4/logs/111.com-access_log

192.168.93.130 - - [14/Apr/2018:17:33:04 +0800] "HEAD HTTP://111.com/lsjdlf.jpg1 HTTP/1.1" 404 - "-" "curl/7.29.0" 只記錄了jpg1。

平時我們看日誌看的是請求過哪個頁面,而不是這些圖片,所有有必要做一個限制。


二、訪問日誌切割

每天有必要把日誌做切割。

切割作用:防止磁盤寫滿,日後查看數據也方便查看。

# 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=!img

rotatelogs:Apache自帶的一個日誌切割工具。

-l:讓它以當前系統的時間為基準,如果不指定-l,就會以UTC格式,中國是CST,美國是UTC。

%Y%m%d:年月日。時間段是一天,換算成秒是86400秒。

# /usr/local/apache2.4/bin/apachectl -t

# /usr/local/apache2.4/bin/apachectl graceful

此時再訪問這個虛擬主機就會生成對應日期的訪問日誌。

# ls

111.com-access_20180414.log 111.com-error_log abc.com-error_log error_log

111.com-access_log abc.com-access_log access_log httpd.pid


三、配置靜態元素過期時間

304狀態碼:代表你所下載的東西已經緩存到本地了,不用再到服務器去下載,可以節省帶寬,但是沒有規定什麽時候把緩存清理掉。

# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<IfModUle mod_expires.c> //模塊名:expires

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>

定義它們的過期時間。

# vim /usr/local/apache2.4/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so打開這個模塊

# /usr/local/apache2.4/bin/apachectl graceful

Ctrl+F5:強制刷新,把本地的緩存清空。

# curl -x 127.0.0.1:80 111.com/lb.jpg -I

HTTP/1.1 200 OK

Date: Sat, 14 Apr 2018 15:42:58 GMT 當前時間

Server: Apache/2.4.33 (Unix) PHP/7.1.6

Last-Modified: Tue, 20 Feb 2018 04:04:27 GMT

ETag: "5607b-5659ce81be8c0"

Accept-Ranges: bytes

Content-Length: 352379

Cache-Control: max-age=86400

Expires: Sun, 15 Apr 2018 15:42:58 GMT 過期時間和當前時間差24小時

Content-Type: image/jpe

如果不設置加載這個模塊就不會有過期時間這一行,一般都會設置這個。


擴展

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


四十二、訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間