本番環境で自分のアクセスをwebサーバのアクセスログに残したくない
apacheはsetenvifで制御できる
webサーバにはアクセスログというものがある。開発時にはデバッグに利用したり、プロダクション環境の運用時にも必須の機能というか欠かせないものである。
が、ログに残したくないアクセスも存在する。例えば、自分自身が本番環境にアクセスしたログなどを残すようにしているとアクセスログを分析する際にノイズとなるかもしれない。そのような場合には、setenvifという機能を利用してapacheのログ記録を細かく制御することができる。
Remote_Addr
SetEnvIf Remote_Addr 192.168.0. ignore_log
ローカルエリアネットワーク内のipアドレスの場合にignore_logという変数を設定している。
上の設定をvirtualhost内に設定し、同じくvirtualhost内で
CustomLog C:/xampp/apache/logs/access.log combined env=!ignore_log
と設定すればローカルエリア内からのアクセスをログに残さずに運用することができる。Remote_Addrで指定するipアドレスはグローバルのipアドレスでも設定できる。またユーザーエージェントでsetenvifを指定することもできる。
User-Agent
SetEnvIf User-Agent teza ignore_log
上のように設定すればtezaというユーザーエージェントのアクセスをログに記録しないように設定できる。
Request_Method
SetEnvIf Request_Method HEAD ignore_log
上の例は、リクエストメソッドが”HEAD”のアクセスに対して、ignore_logを設定する例である。HTTPのリクエストメソッドによって制御することも可能。
Request_URI
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" ignore_log
画像ファイルへのリクエストURLの場合に、ignore_logを設定する場合は上記のような方法で対応できる。
Remote_Host
SetEnvIf Remote_Host .test.net ignore_log
ホスト名で制御することもできる。特定のホストからのアクセスをログに残したくない場合に利用できる。
ログ関連だけでなく、apacheの制御にsetenvifは活用できるのでおぼえておきたい。利用には、httpd.confで以下のモジュールを有効にしておく必要がある。
LoadModule setenvif_module modules/mod_setenvif.so