Linux學習總結(三十五)lamp之訪問日誌配置
網站大多元素為靜態文件,如圖片、css、js等,記錄這些訪問信息對我們運維工作沒有多大意義,如果一個站點訪問量很大,那麽一天就可以達到幾GB。影響我們磁盤的工作效率,那麽我們就可以配置虛擬主機限制記錄這些信息。
把虛擬主機配置文件改成如下:
<VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com ServerAlias 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 CustomLog "logs/123.com-access_log" combined env=!img </VirtualHost>
重新加載配置文件 -t, graceful
mkdir /data/wwwroot/www.123.com/images //創建目錄,並在這目錄下上傳一個圖片
curl -x127.0.0.1:80 -I 123.com/images/123.jpg
curl -x127.0.0.1:80 -I 123.com/345..php
我們分別訪問一個圖片和一個php網頁,然後 tail /usr/local/apache2.4/logs/123.com-access_log 查看日誌,會發現只記錄了訪問345.php的信息,而沒有記錄訪問圖片的信息。這裏直接起作用的語句為env=!img 其中!為取反的意思,指除過我們定義的request ,其他的都記錄。
二 訪問日誌切割
日誌一直記錄總有一天會把整個磁盤占滿,而且單個日誌文件也不利於我們定位故障,所以有必要讓它自動切割,並刪除老的日誌文件
把虛擬主機配置文件改成如下:
<VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com ServerAlias 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 CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.log 86400" combined env=!img </VirtualHost>
重新加載配置文件 -t, graceful
ls /usr/local/apache2.4/logs
這裏我們發現多了一個帶日期的日誌文件,該文件就是我們上面配置後對訪問日誌切割的結果,其中rotatelos為httpd自帶的日誌切割工具,它會把訪問日誌按照我們定義的格式進行切割,其中86400單位是秒,相當於一天。
三 配置靜態元素訪問過期時間
瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏,這樣下次再訪問時就不用去遠程下載了。但是到底能緩存多久呢,如果服務器上的圖片更改了,那麽應該訪問新的圖片才對。這就涉及到靜態文件緩存時長的問題,也叫做緩存過期時間。這個時間我們可以在虛擬主機配置文件中配置。
我們在剛才的訪問日誌配置語句下面增加如下配置模塊
<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"
ExpiresDefault "now plus 0 min"
</IfModule>
註意該配置 需要expires_module,需要在httpd住配置文件中打開該功能。也就是在/usr/lcoal/apache2.4/conf/httpd.conf 中搜索 expires_module,刪除前面的#號
curl測試,看cache-control: max-age
Linux學習總結(三十五)lamp之訪問日誌配置