1. 程式人生 > >42.訪問日誌不記錄靜態檔案及切割 靜態元素過期時間

42.訪問日誌不記錄靜態檔案及切割 靜態元素過期時間

11.22 訪問日誌不記錄靜態檔案

11.23 訪問日誌切割

11.24 靜態元素過期時間

擴充套件 

apache日誌記錄代理IP以及真實客戶端IP http://ask.apelearn.com/question/960

apache只記錄指定URI的日誌 http://ask.apelearn.com/question/981

apache日誌記錄客戶端請求的域名 http://ask.apele...

 

 

 

11.22 訪問日誌不記錄靜態檔案:

 

訪問網站的元素都有哪些,谷歌瀏覽器的話按F12。我們在訪問一個頁面的時候,他其實載入了很多的元素,如下圖

其中每一行都是一個請求,每一行都有一個地址,這就是一個請求,這些請求就會記錄日誌而且我們主要就是看這些。

但是其中網站大多元素為靜態檔案,如圖片、css、js等,這些元素可以不用記錄

把虛擬主機配置檔案改成如下(相當於定義了一個環境):

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.com

ServerAlias 123.com

SetEnvIf Request_URI ".*\.gif$" img 正則,就是符合.gif的為img(可隨便寫,不一定非得是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

CustomLog "logs/111.com-access_log" combined env=!img 在這一行(Custonlog)上面加入。

env=!img 我們上面定義的img,凡是符合定義的img的不會記錄到這裡 !是取反的意思。

</VirtualHost>

重新載入配置檔案 -t, graceful

mkdir /data/wwwroot/111.com/images 建立目錄,並在這目錄下上傳一個圖片

curl -x127.0.0.1:80 -I 111.com/images/123.jpg

tail /usr/local/apache2.4/logs/123.com-access_log

 

 

例項:

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

ErrorLog "111.com-error_log"

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/111.com-access_log" combined env=!img

</VirtualHost>

[root@localhost ~]# cd /data/wwwroot/111.com/images

[root@localhost images]# rz

[root@localhost images]# ls

360截圖1.jpg 

[root@localhost images]# mv 360截圖1.jpg  abc.jpg

[root@localhost images]# ls

abc.jpg

[root@localhost images]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK

[root@localhost images]# /usr/local/apache2.4/bin/apachectl graceful

httpd not running, trying to start

[root@localhost images]# curl -x127.0.0.1:80 -I 111.com/images/abc.jpg  我們測試abc.jpg,成功

curl -x192.168.30.133:80 -I 111.com/images/abc.jpg  測試失敗,不知原因。

HTTP/1.1 200 OK
Date: Fri, 19 Jul 2019 02:30:53 GMT
Server: Apache/2.4.39 (Unix) PHP/5.6.32
Last-Modified: Wed, 17 Jul 2019 07:48:52 GMT
ETag: "f09b-58ddbb96f8100"
Accept-Ranges: bytes
Content-Length: 61595
Content-Type: image/jpeg

 

[root@localhost 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log 這裡卻沒有顯示我們測試的訪問記錄

192.168.30.1 - - [18/Jul/2019:17:04:33 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.30.1 - - [18/Jul/2019:17:23:41 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [18/Jul/2019:17:23:41 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [18/Jul/2019:17:23:44 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.30.1 - - [18/Jul/2019:17:24:03 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [18/Jul/2019:17:24:14 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:27 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:27 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:27 +0800] "GET /favicon.ico HTTP/1.1" 301 234 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
192.168.30.1 - - [19/Jul/2019:09:35:31 +0800] "GET / HTTP/1.1" 301 223 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

11.23 訪問日誌切割:

 

 

 

日誌一直記錄總有一天會把整個磁碟佔滿,所以有必要讓它自動切割,並刪除老的日誌檔案

把虛擬主機配置檔案改成如下:

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.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/111.com-access_%Y%m%d.log 86400" combined env=!img 只需要在這一行加入 紅色部分(rotatelogs是Apache自帶的切割工具)

-l是讓他以當前系統的時間為基準(時區。我們中國是CST,預設是美國UTC)data命令可以看到

%Y%m%d.log定義變數,也及時切割後的名字以我們設定的變數(年月日)來命名

86400 就是86400秒。定義每天切割,也就是86400秒

</VirtualHost>

重新載入配置檔案 -t, graceful

curl -x192.168.30.133 111.com -I 訪問才會生成

HTTP/1.1 200 OK
Date: Fri, 19 Jul 2019 03:30:20 GMT
Server: Apache/2.4.39 (Unix) PHP/5.6.32
X-Powered-By: PHP/5.6.32
Content-Type: text/html; charset=UTF-8

ls /usr/local/apache2.4/logs

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

注意:我們僅僅只是讓他每日切割。還需要做一個任務計劃,讓他每日刪除,只保留這一個

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

11.24 靜態元素過期時間:

 

 

 

我們在訪問網站的時候,比如一些圖片會自動下載到我們的電腦裡,下次在訪問的時候就不用再去伺服器下載了。但這些快取的檔案是根據我們瀏覽器的設定來決定時間清理的,或者是電腦管家幫我們清理

如果我們再次訪問這個圖片,瀏覽器檢測到這個圖片沒有更改跟我們本地快取的一樣,就不會再次下載,就會顯示狀態碼304,

這樣對於伺服器是好的,可以節省頻寬。但是沒有定義什麼時候過期,萬一我們對這個圖片做了更改呢,這就需要我們設定靜態元素的過期時間:

 

增加配置

<IfModule mod_expires.c> 用到expires模組

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 主配置檔案,搜尋expires,將這個模組開啟(註釋去掉)

vim /usr/local/apache2.4/conf/httpd.conf

-t graceful

curl測試,看cache-control: max-age

 

 

 

例項:

[root@localhost wwwroot]# 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>

[root@localhost wwwroot]# /usr/local/apache2.4/bin/apachectl -M | grep expires 顯示沒有開啟

[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so 把expires模組註釋去掉

[root@localhost ~]# /usr/local/apache2/bin/apachectl -t

Syntax OK

[root@localhost ~]# /usr/local/apache2/bin/apachectl graceful

[root@localhost ~]# curl -x192.168.30.133:80 111.com/abc.jpg -I

HTTP/1.1 200 OK
Date: Fri, 19 Jul 2019 06:37:49 GMT
Server: Apache/2.4.39 (Unix) PHP/5.6.32
Last-Modified: Wed, 17 Jul 2019 07:48:52 GMT
ETag: "f09b-58ddbb96f8100"
Accept-Ranges: bytes
Content-Length: 61595
Cache-Control: max-age=86400 剛設定,生效。
Expires: Sat, 20 Jul 2019 06:37:49 GMT
Content-Type: image/jpeg