85.Apache(httpd)配置--日誌控制與靜態元素過期時間配置
阿新 • • 發佈:2018-03-11
日誌控制與靜態元素過期時間配置訪問日誌不記錄靜態文件
很多網站大多為靜態網頁,網頁內部的圖片、css文件等同樣有其網址鏈接,如果不設置,這些無效的信息也將被存入訪問日誌中,會導致訪問日誌文件大小快速增加,占用大量存儲空間。我們可以通過設置不記錄某些文件來減少無效信息,節省內存資源。
那麽具體怎麽操作呢?按照下面例子操作即可:
步驟:編輯虛擬主機配置文件
[root@zlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf ErrorLog "logs/123test-error_log" #以下為定義變量:將所有關於圖片,css,js的請求定義為變量img 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 # "env=!img"表示非img變量。意思是:不記錄關於變量img的請求日誌。 CustomLog "logs/123test-access_log" combined env=!img [root@zlinux ~]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@zlinux ~]# /usr/local/apache2/bin/apachectl graceful
將所有訪問圖片的請求定義為變量img,在訪問記錄(日誌)中將其排除即可。重新加載後使用curl訪問img變量中所指定格式的文件內容時將不會產生訪問記錄。
二、訪問日誌切割
隨著服務器的運行,訪問日誌文件大小也將會不斷變大,日誌一直記錄總有一天會把整個磁盤占滿,所以有必要讓它自動切割,並刪除老的日誌文件 步驟1:編輯虛擬主機配置文件 [root@zlinux ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 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秒 [root@zlinux ~]# /usr/local/apache2/bin/apachectl -t Syntax OK [root@zlinux ~]# /usr/local/apache2/bin/apachectl graceful 做幾次加以訪問,查看具體效果:
步驟2:定期刪除老日誌
[root@zlinux logs]# crontab -e //指定計劃任務,此僅為本人測試使用,供參考。 11 21 * * * /usr/bin/find /usr/local/apache2/logs/ -regex ".*/123test-access_log_.*_log" -mmin +5 -exec rm -f {} \; //說明1:每天21點11分刪除五分鐘前日誌文件 //說明2:已經在httpd-vhosts.conf中設置每一分鐘切割一次日誌 //說明3:使用-regex時有一點要註意:-regex不是匹配文件名,而是匹配完整的文件名(包括路徑)。例如,當前目錄下有一個文件"abar9",如果你用"ab.*9"來匹配,將查找不到任何結果,正確的方法是使用".*ab.*9"或者".*/ab.*9"來匹配。這裏/logs/表示當前目錄,所以後面日誌格式寫成“.*/123test-access_log_.*_log”
三、設置靜態文件失效時間
瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏,這樣下次再訪問時就不用去遠程下載了。
但是緩存多久呢?如果網站圖片更新了呢,那麽應該訪問新圖片才是。所以這就涉及到靜態文件緩存時長的問題了,也就是“緩存過期時間”。
步驟1:啟用expires模塊
[root@zlinux logs]# vim /usr/local/apache2/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so //去掉#
[root@zlinux logs]# /usr/local/apache2/bin/apachectl -M | grep -i expire //檢查模塊是否加載
expires_module (shared)
步驟2:修改虛擬主機配置文件
[root@zlinux logs]# vim /usr/local/apache2/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"
//除上述外的文件指定默認的過期時間
85.Apache(httpd)配置--日誌控制與靜態元素過期時間配置