linux的訪問日誌不記錄靜態文件、切割、靜態元素過時時間配置

訪問日誌不記錄靜態文件

一個網站會有不少元素,尤爲是圖片、js、css等靜態的文件很是多,用戶每請求一個頁面就會訪問諸多的圖片、js等靜態元素,這些元素的請求都會被記錄在日誌中。若是一個站點訪問量很大,那麼訪問日誌文件增加會很是快,一天就能夠達到幾GB。這不只對於服務器的磁盤空間形成影響,更重要的是會影響磁盤的讀寫速度。還好這些巨量的靜態元素請求記錄到日誌裏的意義並不大,因此能夠限制這些靜態元素去記錄日誌,而且須要把日誌按天歸檔,一天一個日誌,這樣也能夠防止單個日誌文件過大。javascript

  1. 修改虛擬主機配置文件:
[root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

參考配置修改以下:
 <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias 111.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>

更改配置文件後須要從新加載配置文件:
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
修改完後,示例以下:

linux的訪問日誌不記錄靜態文件、切割、靜態元素過時時間配置

解釋說明:

先定義一個img環境變量,把gif、jpg、png、bmp、swf、js、css等格式的文件所有歸類到img裏,後面的env=!imge有用到一個「!」,這至關於取反了,意思是把img之外的類型文件記錄到日誌裏。php

驗證以下:css

[root@gary-tao local]# curl -x127.0.0.1:80 111.com/alskdda.jpg -I
HTTP/1.1 404 Not Found
Date: Thu, 21 Dec 2017 06:39:14 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@gary-tao local]# !tail    //未更新配置前日誌是有jpg文件。
tail /usr/local/apache2.4/logs/111.com-access_log 
127.0.0.1 - - [20/Dec/2017:20:36:35 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [20/Dec/2017:20:39:23 +0800] "HEAD http://111.com/123.php HTTP/1.1" 403 -
127.0.0.1 - - [20/Dec/2017:20:40:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
[root@gary-tao local]# curl -x127.0.0.1:80 111.com/alskdda.png -I  
HTTP/1.1 404 Not Found
Date: Thu, 21 Dec 2017 06:49:10 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@gary-tao local]# tail /usr/local/apache2.4/logs/111.com-access_log //更新配置日誌後沒有png文件。
127.0.0.1 - - [20/Dec/2017:20:40:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
172.16.111.1 - xie [21/Dec/2017:14:43:17 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:43:18 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
模擬一張圖片實際測試:
[root@gary-tao ~]# cd /data/wwwroot/111.com/ //cd到目錄下面
[root@gary-tao 111.com]# ls
123.php  index.php
[root@gary-tao 111.com]# rz  //上傳一張圖片,若是不能使用rz請安裝yum install -y lrzsz

[root@gary-tao 111.com]# ls //已上傳文件 
123.php  index.php  QQ截圖20171221141829.png
[root@gary-tao 111.com]# curl -x127.0.0.1:80 111.com/QQ截圖20171221141829.png -I  //運行下程序
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 07:08:49 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Thu, 21 Dec 2017 06:18:31 GMT
ETag: "91ab-560d3ab3fbbc0"
Accept-Ranges: bytes
Content-Length: 37291
Content-Type: image/png

[root@gary-tao 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log  //發現日誌並無圖片png的記錄
127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
172.16.111.1 - xie [21/Dec/2017:14:43:17 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:43:18 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - - [21/Dec/2017:15:09:15 +0800] "GET /QQ HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
[root@gary-tao 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf  //爲了實驗須要,先把env=!img去掉
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl graceful //從新加載
[root@gary-tao 111.com]# curl -x127.0.0.1:80 111.com/QQ截圖20171221141829.png -I  //運行圖片
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 07:25:46 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Thu, 21 Dec 2017 06:18:31 GMT
ETag: "91ab-560d3ab3fbbc0"
Accept-Ranges: bytes
Content-Length: 37291
Content-Type: image/png

[root@gary-tao 111.com]# tail /usr/local/apache2.4/logs/111.com-access_log  //查看下例就有png圖片的日誌出來
127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:04:49 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:14:39:14 +0800] "HEAD HTTP://111.com/alskdda.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
172.16.111.1 - xie [21/Dec/2017:14:43:17 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - xie [21/Dec/2017:14:43:18 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
172.16.111.1 - - [21/Dec/2017:15:09:15 +0800] "GET /QQ HTTP/1.1" 404 200 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
127.0.0.1 - - [21/Dec/2017:15:25:46 +0800] "HEAD HTTP://111.com/QQ\xe6\x88\xaa\xe5\x9b\xbe20171221141829.png HTTP/1.1" 200 - "-" "curl/7.29.0"

測試完成後把剛纔去掉的env=!img添加到配置文件裏去。
添加上圖片後能夠上瀏覽器上打開,示例以下:

linux的訪問日誌不記錄靜態文件、切割、靜態元素過時時間配置


訪問日誌切割

日誌一直記錄總有一天會把整個磁盤佔滿,因此有必要讓它自動切割,並刪除老的日誌文件,防止磁盤寫滿,用日期記錄日誌方便管理及查找。還要寫一個任務計劃,按期清理超過期間的日誌。html

  1. 修改虛擬主機配置文件,給日誌作一個切割。
[root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

參考配置修改以下:
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias 111.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
</VirtualHost>

更改配置文件後須要從新加載配置文件:
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl graceful
[root@gary-tao 111.com]# ls /usr/local/apache2.4/logs/
111.com-access_log  111.com-error_log  abc.com-access_log  abc.com-error_log  access_log  error_log  httpd.pid
[root@gary-tao ~]# curl -x127.0.0.1:80 111.com/123.php
123.php[root@gary-tao ~]# 
[root@gary-tao ~]# ls /usr/local/apache2.4/logs/
111.com-access_log  111.com-access_20171221.log  abc.com-error_log  error_log
111.com-error_log   abc.com-access_log           access_log         httpd.pid
[root@gary-tao ~]# ls /usr/local/apache2.4/logs/111.com-access_20171221.log 
/usr/local/apache2.4/logs/123.com-access_20171221.log
[root@gary-tao ~]# cat !$
cat /usr/local/apache2.4/logs/123.com-access_20171221.log
127.0.0.1 - - [21/Dec/2017:16:47:53 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:53:56 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:54:06 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"

[root@gary-tao ~]# curl -x127.0.0.1:80 111.com/123.php.png -I //訪問圖片的
HTTP/1.1 404 Not Found
Date: Thu, 21 Dec 2017 08:57:55 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@gary-tao ~]# cat /usr/local/apache2.4/logs/111.com-access_20171221.log //查看日誌並無記錄
127.0.0.1 - - [21/Dec/2017:16:47:53 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:53:56 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
127.0.0.1 - - [21/Dec/2017:16:54:06 +0800] "GET HTTP://111.com/123.php HTTP/1.1" 200 7 "-" "curl/7.29.0"
配置文件修改完後,示例以下:

linux的訪問日誌不記錄靜態文件、切割、靜態元素過時時間配置

解釋說明:

這裏的123.com-access_20171221.log就是新生成的日誌,並且之後會天天生成一個按日期命名的日誌。java

靜態元素過時時間

在日誌裏會發現有一個狀態碼304,這個狀態碼錶示該文件已經緩存到用戶的電腦裏了(瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏),這樣下次再訪問時就不用去遠程下載了,而是直接訪問用戶電腦裏面的緩存。這樣作的目的是下降服務器的資源消耗,還能夠提高用戶訪問網站的速度。那到低能夠緩存多久呢?若是服務器上的某個圖片更改了,那麼應該訪問新的圖片纔對,這就涉及一個靜態文件緩存時長的問題,也叫做「緩存過時時間」。linux

1.編輯虛擬主機配置文件apache

在虛擬機主配置文件添加以下配置:
在111.com模塊添加以下:

<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>
解釋說明:

這部分配置用到了mod_expires模塊,相關配置內容並不難理解,經過字面也能夠大體猜到其含義。這裏gif、jpeg、png格式的文件過時時長爲1天,css、js、flash格式的文件過時時長爲2小時,其餘文件過時時長爲0,也就是不緩存。vim

示例圖

linux的訪問日誌不記錄靜態文件、切割、靜態元素過時時間配置

[root@gary-tao 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK  //添加完成後測試語法是否有沒錯誤
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expires  //沒有任何輸出,說明當前httpd不支持expires模塊,因此須要悠配置文件,打開該模塊
[root@gary-tao 111.com]# vim /usr/local/apache2.4/conf/httpd.conf //搜索expires關鍵訊,找到下面這行
#LoadModule expires_module modules/mod_expires.so //把本行的最前面 的#刪除,保存退出
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl graceful  //從新加載配置
[root@gary-tao 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expires  //下面有expires輸出,說明正確加載expires模塊。
 expires_module (shared)

2.使用curl來測試效果:瀏覽器

[root@gary-tao 111.com]# curl -x127.0.0.1:80 111.com/qq.png -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 11:54:14 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Thu, 21 Dec 2017 06:18:31 GMT
ETag: "91ab-560d3ab3fbbc0"
Accept-Ranges: bytes
Content-Length: 37291
Cache-Control: max-age=86400
Expires: Fri, 22 Dec 2017 11:54:14 GMT
Content-Type: image/png
說明:

能夠看到max-age=86400,這說明jpg的圖片將緩存86400秒,也就是一天。緩存

相關文章
相關標籤/搜索