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

訪問日誌不記錄指定類型的文件

一般狀況下一個網站會有不少元素,尤爲是圖片、js、css等靜態的文件很是多,用戶每請求一個頁面就會訪問諸多的圖片、js(javascripts)、css(Cascading Style Sheets)等靜態元素,這些元素的請求都會被記錄在日誌中。若是一個站點訪問量很大,那麼訪問日誌文件增加會很是快,這不只會佔用不少的磁盤空間,還會影響磁盤的讀寫速度。實際上這些巨量的靜態元素請求記錄到日誌裏的意義並不大,因此咱們每每會經過修改配置文件讓這些靜態元素的請求記錄不寫到日誌文件當中javascript

  • 默認狀況下,當咱們訪問一個網站的靜態元素,如jpg圖片等,在日誌文件裏會有記錄
  • 下面的例子是我使用瀏覽器瀏覽了該網站下的一個123.jpg的圖片
192.168.254.1 - - [22/Aug/2018:03:07:12 +0800] "GET /123.jpg HTTP/1.1" 200 775702 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"

下面經過修改配置文件,讓瀏覽靜態文件的記錄不會寫進日誌文件中

  • 編輯虛擬主機配置文件 vim /usr/local/apache/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
    CustomLog "logs/111.com-access_log" combined env=!img
	```
       SetEnvIf                  設置匹配條件
       img                       設置一個標記
       env=!img                  不記錄訪問帶有標記img的項
虛擬主機的配置文件以下

<VirtualHost :80> DocumentRoot "/tmp/ccc.com" ServerName ccc.com ServerAlias www.ccc.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 ErrorLog "ccc.com_log" CustomLog "ccc.com_log" combined env=!imgcss

再次訪問該網站下的123.jpg,發現記錄不會被寫到日誌文件中。

## 訪問日誌切割
爲了更方便的查看和管理日誌,咱們能夠將日誌文件切割成n多個,好比一天生成一個日誌文件,這樣不但容易查看和管理,還能夠防止單個日誌文件過大。
- 編輯配置文件 vim /usr/local/apache/conf/extra/httpd-vhosts.conf
- 選中Customlog這一行進行編輯
`CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/ccc.com-access_log_%Y%m%d.log 86400" combined env=!img`
/usr/local/apache/bin/rotatelogs      這是apache自帶的一個日誌切割功能
- -l      表示按照本機時間進行切割,若是不加-l那麼表示使用UTC時間,中國使用的是CST時間
- %Y%m%d.log 表示年月日,日誌切割的時候後綴名會加上年月日,
86400 表示每過86400秒就生成一個新的日誌文件,86400就是一天的時間
-  配置完成後須要檢查配置文件以及從新加載配置文件纔會生效
        /usr/local/httpd2.4/bin/apachectl -t
        /usr/local/httpd2.4/bin/apachectl graceful
當再次訪問該網站的時候就會發現,系統生成了一個新的日誌文件`ccc.com-access_log_20180821.log`

[root@localhost logs]# ls 111.com-access_log ccc.com-access_log_20180821.log dummy-host2.example.com-error_log dummy-host.example.com-error_log httpd.pid access_log dummy-host2.example.com-access_log dummy-host.example.com-access_log error_log```java

靜態元素過時時間

在使用瀏覽器瀏覽網頁時,瀏覽器會把網頁資料緩存(Cache)到本地,用以加快下回瀏覽相同網頁時沒必要再從新加載,提高訪問速度。使用mod_expires模塊來加速網頁瀏覽,這裏所謂的」加速」,實際上是利用」mod_expires」的功能,來設定網頁文件的過時時間,只要網頁文件的過時時間未到,瀏覽器就會引用緩存的資料,而不用再去加載站點上的文件,能夠減小瀏覽者對網站的帶寬佔用(例若有些虛擬主機有限制網站可以使用的流量)apache

  1. 編輯配置文件 vim /usr/local/apache/conf/extra/httpd-vhosts.conf
  2. 選擇須要配置的虛擬注意,添加以下配置
<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>
	```
      其中使用<IfModule></IfModule>來包夾指令能夠避免在mod_expires模組沒有啓用的狀況下還要去執行.若是mod_expires模組肯定已經啓用,那不寫<IfModule></IfModule>也不要緊。
 - ExpiresActive on:    啓用mod_expires功能,相對的Off就是關閉功能
 - ExpiresByType :      ExpiresByType指令是依照不一樣的網頁文件型態來作過時時間設定
 - access :過時起算時間有三種,分別是access、now 以及modification.其中access與now意義相同,而modification指的是網頁文件的」最後編輯時間」.因此若是要以檔桉的最 後編輯時間起算,能夠寫成這樣,」modification plus 10 days」.而時間的指定也很簡單,就是英文單字(years、months、weeks、days、hours、minutes、seconds).例 如,能夠寫成這樣,」access plus 1 month 15 days 2 hours」
 -  ExpiresDefault:    表示其它的設置默認。
3. 檢查expire模塊是否打開,若是沒有打開須要在Apache主配置文件中開啓
    檢查模塊是否加載  `/usr/local/apache/bin/apachectl -M |grep expire  expires_module (shared)`若是模塊未加載,編輯主配置文件`vim /usr/local/apache/conf/httpd.conf`
4. 搜索關鍵字:,找到這一行,並刪掉該行首的#:`#LoadModule expires_module modules/mod_expires.so`
1. 從新加載配置文件`/usr/local/apache/bin/apachectl graceful`

- 在沒有配置上述這些內容時,使用curl訪問該站點反饋的內容爲

[root@localhost logs]# curl -x127.0.0.1:80 ccc.com/123.jpg -I HTTP/1.1 200 OK Date: Tue, 21 Aug 2018 12:23:23 GMT Server: Apache/2.4.34 (Unix) PHP/5.6.37 Last-Modified: Tue, 14 Jul 2009 05:32:31 GMT ETag: "bd616-46ea3c3d3b9c0" Accept-Ranges: bytes Content-Length: 775702 Content-Type: image/jpegvim

- 在配置了上述的內容後,再使用curl訪問該站點反饋的內容爲:

[root@localhost logs]# curl -x127.0.0.1:80 ccc.com/123.jpg -I HTTP/1.1 200 OK Date: Tue, 21 Aug 2018 12:27:31 GMT Server: Apache/2.4.34 (Unix) PHP/5.6.37 Last-Modified: Tue, 14 Jul 2009 05:32:31 GMT ETag: "bd616-46ea3c3d3b9c0" Accept-Ranges: bytes Content-Length: 775702 Cache-Control: max-age=86400 多了一行元素過時時間86400秒 Expires: Wed, 22 Aug 2018 12:27:31 GMT Content-Type: image/jpeg瀏覽器

相關文章
相關標籤/搜索