|
Last-modified: 2005-04-04 (月) 16:38:33 (7175d)
最近のApacheは、ソースに手を加えなくても、httpd.confだけでかなりカスタマイズできるようになってますね。- 2003.12.14 rotatelogs.exeによるログのローテーション † Linuxであれば、logrotateを使うのが普通なんでしょう。Windowsでもバッチファイルをタスクに登録すると同じことができます。 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時間になりますね。 画像ファイルをロギングしない。 † 「Webサイトの 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。 ウィルス、ワームからのリクエスト対策(2) †最近のApacheのアクセスログを見ると、以下のような「URI too long」なログが多く、ログファイルを無駄に肥大化させています。 {IP} - - [24/Apr/2004:11:57:21 +0900] "SEARCH /\x90\x02\xb1…(延々と続く)…\x90" 414 271 "-" "-" 「URI too long」なログはSetEnvIfではうまく分離できないので、LogFormatを変更して、「HTTP Statusが414でなければRequestを記録する」ようにしましょう。 LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 自サイト内のページ移動をReferralログから削除 † Referralログはどのページからリンクをたどってきたという情報です。 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 とします。 logrotateによるログのローテーション †linuxではこっちの設定の方がいいでしょうね。 /etc/logrotate.d/apache /var/log/apache/access_log { monthly copytruncate rotate 120 postrotate EXT=`date -d '1 day ago' +%Y%m` for f in $1; do mv $f.1 $f.$EXT; done # /bin/kill -HUP `cat /var/run/httpd.pid 2> /dev/null` 2> /dev/null endscript } /var/log/apache/error_log { monthly copytruncate rotate 24 postrotate EXT=`date -d '1 day ago' +%Y%m` for f in $1; do mv $f.1 $f.$EXT; done # /bin/kill -HUP `cat /var/run/httpd.pid 2> /dev/null` 2> /dev/null endscript } ポイントは、
(参考サイト) NCSA common形式から、combined形式へ変換するPerlスクリプト †
|