網站大多元素爲靜態文件,如圖片,css,js等,這些元素能夠不記錄。javascript
1.修改虛擬主機配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.confcss
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <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 CustomLog "logs/111.com-access_log" combined env=!img #「env=!img」表示非img變量。本行命令的含義是:不記錄關於變量img的請求日誌。 </VirtualHost>
將全部訪問圖片格式的請求定義爲變量img,在訪問日誌中排除img部分。java
2.從新加載配置文件:apache
/usr/local/apache2.4/bin/apachectl -t瀏覽器
/usr/local/apache2.4/bin/apachectl graceful緩存
3.測試:bash
curl -x127.0.0.1:80 111.com/xxxxx -I app
curl -x127.0.0.1:80 111.com/xxxxx.jpg -Icurl
執行以上兩條命令,正常狀況下在/usr/local/apache2.4/logs/111.com-access.log日誌中只會存在xxxxx的訪問記錄,xxxxx.jpg的訪問不會記錄到日誌中。工具
日誌一直在記錄,總會有堵滿磁盤的時候,因此須要讓日誌自動切割,並刪除舊的日誌文件。
1.編輯虛擬主機配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <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 CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img #使用rotatelogs工具,以系統時間爲基準,天天切割一第二天志,而且日誌名字格式爲「111.com-access_%Y%m%d.log」。 #每小時切割一第二天志,語法: #CustomLog "|/usr/local/apache2.4/bin/rotatelogs logs/access_%Y%m%d%H.log 3600" combined
2.從新加載配置文件:
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
3.配合cron定時刪除久日誌
當瀏覽器訪問網站時會把靜態文件(如圖片文件、css、js文件等)緩存到本地電腦,這樣下次訪問的時候就不用去遠程下載了,能夠自定義清除該部分緩存的時間,即設定靜態元素過時時間。該設置可用於優化網站,特別是公司內網。
1.編輯虛擬主機配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com <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 #使用rotatelogs工具,以系統時間爲基準,天天切割一第二天志,而且日誌名字格式爲「111.com-access_%Y%m%d.log」。
2.檢查expires模塊是否開啓並從新加載配置文件:
/usr/local/apache2.4/bin/apachectl -M |grep expires
若沒開啓,編輯主配置文件:/usr/local/apache2.4/conf/httpd.conf;搜expires,去掉行前#
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
3.測試:
使用curl -x192.168.8.131:80 111.com/baidu.png -I