天天看点

開啟apache的日誌功能,但是不記錄.js;.css;.jpg;.ico;.png等訪問記錄

維護web伺服器最重要的就是要每天都關注網站的訪問日誌,但是每天面對幾百兆的日誌文件實在是非常頭大,所以可以從根源上給日誌減肥一下,讓日誌只記錄對自己有用的內容就變得非常重了.

Nginx伺服器要修改這個配置是非常簡單的,反而apache比較麻煩,網上類似的文章也比較少,最後自己研究了一下apache2.2x的手冊才發現原因,原來是因為apache的手冊草草了事說的不明不白的,因此導致很多人知道apache有這個功能,但是具體如何設定卻是很多人都不知道,昨天晚上花了一些時間仔細研究了一下,最後發現可以用下邊的代碼設定虛擬機,并可達到給日誌文件減肥的目的,好了廢話不多說了,直接上代碼:

<VirtualHost *:80>
		ServerName 7.7di.net
		ServerAlias 127.0.0.1
		DocumentRoot /var/www/7.7di.net
		ErrorLog /var/log/httpd/7.7di.net-error.log
		DirectoryIndex index.html index.htm index.php
		ServerAdmin see7di#gmail.com
		ErrorDocument 404  /404.html

		SetEnvIf Remote_Addr "127\.0\.0\." dontlog
		SetEnvIf Remote_Addr "10\.20\.30\." dontlog
		SetEnvIf Remote_Addr "::1" dontlog
		SetEnvIf Request_URI "\.(txt|ico|png|bmp|css|js|gif|jpg|swf)$" dontlog
		CustomLog /var/log/httpd/7.7di.net-access.log common env=!dontlog

		<Directory /var/www/7.7di.net>
			Options FollowSymLinks
			AllowOverride All
			Order allow,deny
			Allow from all
		</Directory>
	</VirtualHost>
           

接下來我簡單的說明一下以上配置的意義:

<VirtualHost *:80> 建立虛擬站點,監聽80端口

ServerName 7.7di.net 為虛擬站點設置域名

ServerAlias 127.0.0.1 為虛擬站點設定其他的域名

DocumentRoot /var/www/7.7di.net 虛擬站點實際存放的物理路徑

ErrorLog /var/log/httpd/7.7di.net-error.log 虛擬站點的錯誤日誌及存放位置

DirectoryIndex index.html index.htm index.php 為虛擬站點指定首頁入口文件

ServerAdmin see7di#gmail.com 設定站長email

ErrorDocument 404 /404.html 設定404錯誤頁

SetEnvIf Remote_Addr "127.0.0." dontlog 若來訪者是本機則不寫入日誌

SetEnvIf Remote_Addr "10.20.30." dontlog 若來訪者來自公司內部局域網則不寫入日誌

SetEnvIf Remote_Addr "::1" dontlog 若來訪者是本機,則不寫入日誌

SetEnvIf Request_URI ".(txt|ico|png|bmp|css|js|gif|jpg|swf)$" dontlog 若用戶訪問的文件類型是txt|ico|png|bmp|css|js|gif|jpg|swf則不寫入日誌

CustomLog /var/log/httpd/7.7di.net-access.log common env=!dontlog 記錄訪問日誌(排除上邊的四個條件)