訪問日誌靜態檔案,訪問日誌切割,靜態元素過期時間
阿新 • • 發佈:2018-11-26
[toc]
一 訪問日誌不記錄靜態檔案
很多網站大多為靜態網頁,網頁內部的圖片、css檔案等同樣有其網址連結,如果不設定,這些無效的資訊也將被存入訪問日誌中,會導致訪問日誌檔案大小快速增加,佔用大量儲存空間。我們可以通過設定不記錄某些檔案來減少無效資訊,節省記憶體資源。
1. 編輯虛擬主機配置檔案
[[email protected] ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ServerAdmin [email protected]
DocumentRoot "/data/wwwroot/xavi.com" ServerName www.xavi.com ServerAlias xavi.com 123.com #以下為定義變數:將所有關於圖片,css,js的請求定義為變數img SetEnvIf Request_URI ".*\.gif$" img // 定義元素為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 ErrorLog "logs/xavi.com-error_log" CustomLog "logs/xavi.com-access_log" common env=!img //指定非img的檔案才記錄日誌。 </VirtualHost>
將所有訪問圖片的請求定義為變數img,在訪問記錄(日誌)中將其排除即可。重新載入後使用curl訪問img變數中所指定格式的檔案內容時將不會產生訪問記錄。img是變數。
重新載入配置檔案:
/usr/local/apache2.4/bin/apachectl -t
Syntax OK
/usr/local/apache2.4/bin/apachectl graceful
再訪問網站下的圖片檔案,檢視日誌已不在記錄圖片的訪問日誌了。
二、 訪問日誌切割
隨著網站訪問量的增大,我們網站的訪問日誌檔案也會變得很大,為了保持磁碟空間,方便訪問日誌的管理(備份、刪除歷史日誌等。),我們可以進行日誌切割,每天的訪問日誌獨立切割出來。
在conf/extra/httpd-vhosts.conf/ 配置檔案下進行設定:
1.把虛擬主機配置檔案改成如下:
[[email protected] ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/data/wwwroot/xavi.com"
ServerName www.xavi.com
ServerAlias xavi.com 123.com
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
ErrorLog "logs/xavi.com-error_log"
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/xavi.com-access_%Y%m%d.log 86400" combined env=!img
// 用命令的形式把日誌切割
</VirtualHost>
切割命令解析 CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/123test-access_log_%Y%m%d_log 86400" combined env=!img
CustomLog "|/usr/local/apache2/bin/rotatelogs -l logs/123test-access_log_%Y%m%d_log 86400" combined env=!img
# /usr/local/apache2.4/bin/rotatelogs工具是apache自帶的分割日誌的工具
# -l引數按當前系統時間為基準進行切割(我國為CST),否則預設UTC
# %Y%m%d表示年月日,這樣會每天記錄一個帶日期的日誌檔案,更方便
# 86400(s)表示每天都進行切割,一天24小時等於86400秒
curl訪問後有日誌檔案生成
crontab -e
[[email protected] ~]# ls /usr/local/apache2.4/logs/xavi.com-access_20180307.log
/usr/local/apache2.4/logs/xavi.com-access_20180307.log
[[email protected] ~]# cat !$
cat /usr/local/apache2.4/logs/xavi.com-access_20180307.log
127.0.0.1 - - [07/Mar/2018:23:14:45 +0800] "GET HTTP://xavi.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
11.24 靜態元素過期時間
瀏覽器訪問網站的圖片時會把靜態的檔案快取在本地電腦裡,這樣下次再訪問時就不用去遠端下載了。
但是快取多久呢?如果網站圖片更新了呢,那麼應該訪問新圖片才是。所以這就涉及到靜態檔案快取時長的問題了,也就是“快取過期時間”。
1.啟用expires模組
[[email protected] logs]# vim /usr/local/apache2.4/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so //去掉#
2.修改虛擬主機配置檔案
[[email protected] logs]# 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"
// 按檔案型別來設定自定義過期時間
// acess表示從訪問時間開始
// now表示按當前時間開始
// plus在前面的時間基礎上加上
// 1 hours/days 表示檔案的生命週期
// 例如 acess plus 1 days 表示該檔案從訪問的時間開始1天內有效,無需重新獲取
ExpiresDefault "now plus 0 min"
//除上述外的檔案指定預設的過期時間
3.重新載入-t,grancful檢視,檢查模組是否載入
[[email protected] logs]# /usr/local/apache2.4/bin/apachectl -M | grep -i expire //檢查模組是否載入
expires_module (shared)