ApacheのアクセスログからHEADリクエストを除外する

ロードバランサからApacheへ向けて死活監視のためHEADリクエストがくるんだけど、こいつがApacheアクセスログに毎回出力されるのがうざい。ということで、ApacheアクセスログからHEADリクエストのログを除外するための設定を探してみた。

環境は
Apache 2.2.11
OS CentOS5.2

httpd.confに追加する設定は以下の2行

    SetEnvIf Request_Method "(GET)|(POST)|(PUT)|(DELETE)" log
    CustomLog "logs/access_log" combined env=log

1行目のSetEnvIfではHTTPリクエストのメソッドがGETかPOSTかPUTかDELETEの時だけ、環境変数logが設定されます。(HEADも含めたければ「|(HEAD)」を追加)logの値にはGETとかPUTとかが入ってるんだろうか、やっぱり。
2行目のCustomLogの3つ目の引数(env=log)では、logという変数がある場合にのみログ出力するようにという設定がされてます。
つまり、HTTPリクエストが、GET,POST,PUT,DELETEのときだけログを出力するようにして、それ以外の場合はログを出力しないということになる。(他のメソッドって普通リクエストされてくるのかなー。よー分からん。ここでは来ないという前提のもと。)

で、Apacheを再起動すれば設定は反映されるはず。ちゃちゃっと動作確認をしたかったので、HEADリクエストを送れるツールは無いかな、と探していたらwgetで出来るっぽい。

wget で HEADリクエスト (groundwalker.com)

HEADリクエストを送るには以下のように--spiderオプションをつけてwgetを実行する。

$ wget --spider http://localhost/

上記のログの設定を行わずにこれを実行すると、Apacheアクセスログ

127.0.0.1 - - [23/Mar/2009:17:55:32 +0900] "HEAD / HTTP/1.0" 200 -

こんな感じでアクセスログがでるけど、上記設定を行った後ではこのログが出力されなくなるのを確認できました。
が、これだとロードバランサ以外からリクエストされたHEADリクエストもログに残んないので、以下のようにロードバランサから来たリクエストをログに残さないという設定にしたほうがいいのか。
(192.168.0.1をロードバランサのIPアドレスとした場合)

    SetEnvIf Remote_Addr "192.168.0.1" log
    CustomLog "logs/access_log" combined env=!log

env=!logで192.168.0.1以外のホストから来たアクセスのみログに出力するようになる。