天天看點

通路日志不記錄靜态檔案、通路日志切割、靜态元素過期時間

通路日志不記錄靜态檔案

當通路很多圖檔,文檔等靜态資源的時候,會加大你日志的容量,日志容量占用你磁盤空間後,會出現伺服器當機等很嚴重的問題,這時需要将日志進行配置優化。當通路網頁時不記錄這些圖檔、css、js等資訊日志。

1、[root@centos7 111.com]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/111.com"

    ServerName 111.com

    ServerAlias www.111.com www.example.com

    php_admin_flag short_open_tag on

    <IfModule mod_rewrite.c>

        RewriteEngine on

        RewriteCond %{HTTP_HOST} !^111.com$

        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]

</IfModule>

    ErrorLog "logs/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

#以上都被标記為img變量;(.gif/.jpg)結尾的;env=!img:這個表示被記錄在日志中

    CustomLog "logs/111.com-access_log" combined env=!img

</VirtualHost>

2、[root@centos7 111.com]# /usr/local/apache2.4/bin/apachectl graceful

<a href="https://s3.51cto.com/oss/201711/10/ded00e66c0799074a5613402e88822e2.png-wh_500x0-wm_3-wmp_4-s_1973458212.png" target="_blank"></a>

<a href="https://s5.51cto.com/oss/201711/10/8058ca89038aabba8e1123eaa22f7f6e.png-wh_500x0-wm_3-wmp_4-s_135037276.png" target="_blank"></a>

擴充:

我的需求是,把類似請求 www.aaa.com/aaa/... 這樣的請求才記錄日志。

在httpd.conf 或者 相關的虛拟主機配置檔案中添加

SetEnvIf Request_URI "^/aaa/.*" aaa-request

CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/aaa-access_%Y%m%d.log 86400" combined env=aaa-request

這樣就可以了。這個原理和不記錄圖檔等靜态通路的日志是一樣的。

通路日志切割

    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img

#-l:以标準時間計算

#使用rotatelogs切割,按86400秒計算(就是一天的時間切割)

#按每小時 3600秒

3、看下日志:

4、使用cronolog方式來切割

每一天建立一個新日志

CustomLog "|bin/cronolog logs/access_%Y%m%d.log" combined

每小時建立一個新日志 

CustomLog "|bin/cronolog logs/access_%Y%m%d%h.log" combined

rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizeM ]

選項

-l

使用本地時間代替GMT時間作為時間基準。注意:在一個改變GMT偏移量(比如夏令時)的環境中使用-l會導緻不可預料的結果。是以一定要加上-l 否則出現的日志時間和實際時間是相差8小時的。

logfile

它加上基準名就是日志檔案名。如果logfile中包含”%”,則它會被視為用于strftime()的格式字元串;否則它會被自動加上以秒為機關的”.nnnnnnnnnn”字尾。這兩種格式都表示新的日志開始使用的時間。

rotationtime

日志檔案滾動的以秒為機關的間隔時間。

offset

相對于UTC的時差的分鐘數。如果省略,則假定為”0″并使用UTC時間。比如,要指定UTC時差為”-5小時”的地區的當地時間,則此參數應為”-300″。

filesizeM

指定以filesizeM檔案大小滾動,而不是按照時間或時差滾動。

靜态元素過期時間

當第一次通路網頁時,浏覽器自動将靜态的元素緩存到你的電腦上(如靜态圖檔資源),第二次通路則不用去伺服器上擷取,直接在本機電腦上擷取緩存,好處:節省了伺服器帶寬,加速使用者通路;缺點:當伺服器靜态資源更新了,你的本機電腦還在擷取之前的緩存,而不是最新的資源,這時使用者檢視就出錯,就需要設定下過期時間

1、通路http://111.com/3.png時,出現304表示直接在緩存上擷取

<a href="https://s4.51cto.com/oss/201711/10/6ad9282a6de510d07d3eb6a06ff8cbd4.png-wh_500x0-wm_3-wmp_4-s_1447691166.png" target="_blank"></a>

2、[root@centos7 111.com]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

&lt;IfModule mod_expires.c&gt;

    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"

    #以上是定義不同類型的檔案緩存的時間

3、[root@centos7 111.com]# /usr/local/apache2.4/bin/apachectl graceful

4、配置Apache,加載expires子產品  

添加如下内容

[root@centos7 111.com]# vi /usr/local/apache2.4/conf/httpd.conf

LoadModule expires_module modules/mod_expires.so

[root@centos7 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expires

 expires_module (shared)

檢測:

<a href="https://s5.51cto.com/oss/201711/10/5a0c7d36967b967628f979e771da53f8.png-wh_500x0-wm_3-wmp_4-s_833983427.png" target="_blank"></a>

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

HTTP/1.1 200 OK

Date: Thu, 09 Nov 2017 12:02:48 GMT

Server: Apache/2.4.29 (Unix) PHP/5.6.30

Last-Modified: Thu, 09 Nov 2017 12:02:48 GMT

ETag: W/"a102-55d97420ac440"

Accept-Ranges: bytes

Content-Length: 41218

Cache-Control: max-age=86400

Expires: Fri, 10 Nov 2017 12:02:48 GMT

Content-Type: image/png

本文轉自 iekegz 51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/1980576,如需轉載請自行聯系原作者