Webアクセスログの中に以下のような気になるログを発見。
::1 - - [10/Mar/2011:08:55:55 +0900] "OPTIONS * HTTP/1.0" 301 - "-" "Apache/2.2.3 (CentOS) (internal dummy connection)"
上記ログ「internal dummy connection」は、
Apache自身から自身への通信を行なうApache2.2以上でのバージョンの仕様。
ServersMan@VPSにインストールされているApacheは2.2.3(httpd -V で確認)、仕様どおりの動作ということだ。
?この通信は、何の為に行なわれているのか?
ApacheにはWebアクセスを待ち受けている子プロセスが存在し
その子プロセスに対して「起きろ!」と指示を送る為の通信を行なっている。
それが「internal dummy connection」。
参考:http://wiki.apache.org/httpd/InternalDummyConnection
/var/log/httpd/access_logのタイムスタンプを確認して、「あ、アクセスが来てる!」と喜ぶ私。
しかし実際にアクセスしていたのはApache自身であったことに気づき憤りと悲しみを覚えた・・・。。
今回は、このログを表示しないようにhttpd.confの設定を変更したいと思う。Webアクセスログを出力する上で、特定の条件に合致したものを表示させないということが出来る。やらなきゃいけないのは以下の2点。
1.条件を指定
2.条件に一致する場合はログを出力しないと設定
まずは上記1「条件を指定」します。
「User-Agent」が「internal dummy connection」の場合は「nolog」という条件。「nolog」の名前はご自由に。
SetEnvIf User-Agent "internal dummy connection" nolog
次に、上記2「条件に一致する場合はログを出力しない」設定をします。
/etc/httpd/conf/httpd.confの中から、以下の記述を探して欲しい。ディフォルトのServersMan@VPSでは514行目に有ったのでその当たりを探してくれ。
CustomLog logs/access_log combined
これを以下の通り変更する
CustomLog logs/access_log combined env=!nolog
これで、条件(env)が「nolog」でない(=!)場合にはログを出力する設定になった。
上記1,2をまとめると、
CustomLog logs/access_log combined
の部分を編集し
SetEnvIf User-Agent "internal dummy connection" nolog CustomLog logs/access_log combined env=!nolog
としてApacheの再起動 service httpd restart を行なってくれ。
コメント