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之訪問日誌配置