1. 程式人生 > >LAMP架構(apache訪問日誌不記錄靜態文件,靜態元素過期時間,apache日誌切割)

LAMP架構(apache訪問日誌不記錄靜態文件,靜態元素過期時間,apache日誌切割)

訪問日誌不記錄靜態文件 靜態文件過期 apache日誌切割

一、apache訪問日誌不訪問靜態文件

瀏覽器打開後按f12會會出現一個界面,點network,會出現很多請求,訪問日誌裏會記載,有些靜態的圖片或者文件也會記載,太浪費磁盤空間和磁盤io。所以我們要讓日誌不記錄靜態文件

[root@abc ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

定義這些以gif.jgp,png,bmp.swf.js.css結尾的文件為env。

在CustomLog "logs/111.com-access_log" combined 這一行的最後加上env=!img,表示把除了img的文件記錄到日誌裏。

檢查語法錯誤並退出。


實驗:

curl -x127.0.0.1:80 111.com/sadaddas.png1

curl -x127.0.0.1:80 111.com/sadaddas.png

訪問png1和png兩個文件,看看日誌會記錄哪個?

結果為:png不會被記錄,png1會被記錄,

技術分享圖片

或者上傳一張以png結尾的圖片在目錄裏,用瀏覽器訪問,結果還是沒有日誌


二、apache訪問日誌切割


日誌一直記錄總有一天會把整個磁盤沾滿,所以有必要讓它自動切割,並刪除老的日誌文件。保證磁盤永遠寫不滿,且更方便的管理日誌

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

修改 ustomLog "logs/111.com-access_log" combined env=!img 為:

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_log" combined env=!img

rotatelogs是apache自帶的日誌切割工具。-l是為了讓它以當前系統時間為準,如果不指定。他會以utc時間為基準。

而且根據時間日期還要讓他文件有不同的名字。修改111.com-access_log為111.com-access%Y%m%d.log

%Y%m%d分別表示年月日.

還要規定什麽時間去切割。一天是86400秒,日誌名後面加上86400

檢查語法錯誤並退出。


實驗:

訪問一個不是靜態文件的網址內容

[root@abc ~]# curl -x127.0.0.1:80 111.com/dsd.png1

發現日誌目錄裏多了一個以當天時間為名的日誌文件,裏面記錄的則是剛Curl的

[root@abc ~]# ls /usr/local/apache2.4/logs/

111.com-access20171126.log 111.com-access_log 111.com-error_log abc.com abc.com-access_log access_log error_log httpd.pid

[root@abc ~]# cat /usr/local/apache2.4/logs/111.com-access20171126.log

127.0.0.1 - - [26/Nov/2017:15:28:31 +0800] "GET HTTP://111.com/dsd.png1 HTTP/1.1" 404 206 "-" "curl/7.29.0"


三、靜態元素過期時間

配置靜態文件元素過期時間

瀏覽器訪問網站圖片時會把靜態文件緩存在本地電腦裏。這樣下次訪問就不用再去遠程下載了。


實驗:

可以在目錄裏放一個圖片,然後用瀏覽器去訪問,且訪問之前先F12打開管理頁面,點開Network

可以發現,第一次訪問時,狀態碼為200,表示正正常

第二次訪問時,狀態碼為304 Not Modified 表示本地有緩存,且沒有修改,所以不需要從新下載。

這樣可以節省帶寬,但是沒有規定失效日期且什麽時候清理緩存。


修改:

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"

ExpiresDefault "now plus 0 min"

</IfModule>

expire是apache的一個模塊。設置過期時間

檢查apache有沒有這個模塊

[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

如果沒有,則需要到主配置文件裏修改

搜索expire

在109行,把前面的註釋符去掉

保存退出

檢查語法錯誤並重啟服務

[root@abc ~]# /usr/local/apache2.4/bin/apachectl -M |grep expire

expires_module (shared)

apache加載了這個模塊。


實驗:

ctrl+f5可以強制刷新,把本地緩存清空

再訪問圖片是狀態碼顯示為200,且下面有cache-control,過期時間為86400秒,也就是一天,還會告訴你過期日期的時間expires,但是時區是GMT.


[root@abc 111.com]# curl -x127.0.0.1:80 111.com/1.png -I

HTTP/1.1 200 OK

Date: Sun, 26 Nov 2017 08:04:11 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Last-Modified: Sun, 26 Nov 2017 07:07:52 GMT

ETag: "7913-55edd71b4a200"

Accept-Ranges: bytes

Content-Length: 30995

Cache-Control: max-age=86400

Expires: Mon, 27 Nov 2017 08:04:11 GMT

Content-Type: image/png





LAMP架構(apache訪問日誌不記錄靜態文件,靜態元素過期時間,apache日誌切割)