最近のApacheは、ソースに手を加えなくても、httpd.confだけでかなりカスタマイズできるようになってますね。- 2003.12.14

 

rotatelogs.exeによるログのローテーション

 Linuxであれば、logrotateを使うのが普通なんでしょう。Windowsでもバッチファイルをタスクに登録すると同じことができます。
 しかし、ここではApache付属の rotatelogs.exe を使ってみることにします。logrotateとの最大の違いは、古くなったログを消さないということです。

 httpd.conf で

CustomLog logs/access.log common

と記述されているところを

CustomLog "| C:/Apache1.3.29/bin/rotatelogs.exe C:/Apache1.3.29/logs/access_%Y%m%d.log 86400" common

と変更します。ファイルパスは絶対パスじゃないとうまくいかないようです。86400は24時間になりますね。
 refer.log, agent.log に対しても、同様にローテーション処理をした方がいいでしょうね。

画像ファイルをロギングしない。

 「Webサイトの見られ方(・・・・)をログからトレースする」という目的からすると、access.logには画像ファイルへのリクエストは記録される必要はありませんね。

AddModule mod_setenvif.c

が有効になっていることを確認して、(それ以降ならどこでもいいのですが)CustomLog周辺に

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" nolog

を追加します。そして、

CustomLog logs/access.log common env=!nolog

とすると、指定した拡張子のファイルは記録されません。前述のローテーションと組み合わせて、

CustomLog "| C:/Apache1.3.29/bin/rotatelogs.exe C:/Apache1.3.29/logs/access_%Y%m%d.log 86400" common env=!nolog

って感じでしょうか?

cf . http://apache.cesars.org/docs-1.3/mod/mod_setenvif.html#setenvif

ウィルス、ワームからのリクエスト対策

 ついでに、Nimda等ワームからのリクエストは別ファイルに記録するようにしちゃいましょう。

SetEnvIf Request_URI "^/_mem_bin/" warm nolog
SetEnvIf Request_URI "^/_vti_bin/" warm nolog
SetEnvIf Request_URI "^/c/" warm nolog
SetEnvIf Request_URI "^/d/" warm nolog
SetEnvIf Request_URI "^/msadc/" warm nolog
SetEnvIf Request_URI "^/MSADC/" warm nolog
SetEnvIf Request_URI "^/scripts/" warm nolog
SetEnvIf Request_URI "^/default.ida" warm nolog
SetEnvIf Request_URI "^/NULL.IDA" warm nolog
CustomLog "| C:/Apache1.3.29/bin/rotatelogs.exe C:/Apache1.3.29/logs/warm_%Y%m%d.log 86400" common env=warm

を追加するとOK。

自サイト内のページ移動をReferralログから削除

 Referralログはどのページからリンクをたどってきたという情報です。

 詳細なサイトトレースをしない限り、自サイト内の移動を記録することはないでしょう。
 Apacheの以前のバージョンではmod_log_refererにReferralIgnoreってディレクティブがあったようですが、現在ではmod_log_configのSetEnvIfとCustomLogを組み合わせて実現できます。
 例えば、当サイトの場合

SetEnvIf Referer jomora\.bne\.jp mysite
CustomLog logs/referer.log referer env=!mysite

とすると、Referがjomora.bne.jpだった場合、記録されません。前述のローテーションと組み合わせて、

CustomLog "| C:/Apache1.3.29/bin/rotatelogs.exe C:/Apache1.3.29/logs/referer_%Y%m%d.log 86400" referer env=!mysite

とします。



トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS