訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間
訪問日誌不記錄靜態文件
當訪問很多圖片,文檔等靜態資源的時候,會加大你日誌的容量,日誌容量占用你磁盤空間後,會出現服務器宕機等很嚴重的問題,這時需要將日誌進行配置優化。當訪問網頁時不記錄這些圖片、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
擴展:
我的需求是,把類似請求 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
這樣就可以了。這個原理和不記錄圖片等靜態訪問的日誌是一樣的。
訪問日誌切割
1、[root@centos7 111.com]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
</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
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img
#-l:以標準時間計算
#使用rotatelogs切割,按86400秒計算(就是一天的時間切割)
#按每小時 3600秒
</VirtualHost>
2、[root@centos7 111.com]# /usr/local/apache2.4/bin/apachectl graceful
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表示直接在緩存上獲取
2、[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>
<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>
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
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img
</VirtualHost>
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)
檢測:
[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
本文出自 “探索發現新事物” 博客,請務必保留此出處http://shenj.blog.51cto.com/5802843/1980576
訪問日誌不記錄靜態文件、訪問日誌切割、靜態元素過期時間