apacheのsetenvifを利用してログを記録しない方法

本番環境で自分のアクセスを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

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

apacheのsetenvifを利用してログを記録しない方法の記事にコメントを投稿