3月 102011
 
シェアする

 

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 を行なってくれ。

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ