mod_setenvif
環境変数をセットする為のモジュール。標準で組み込まれる
特定のログを省く等に使用できる
■SetEnvIf ディレクティブ
リクエストの属性に基づいて環境変数を設定する
(SetEnvIfNoCaseディレクティブ=大文字小文字を区別しない)
構文 SetEnvIf attribute regex [!]env-variable[=value]
□attributeは次のいずれか
HTTP リクエストヘッダフィールド(RFC 2616)
例えばHost, User-Agent, Referer, Accept-Language など
Remote_Host リクエストを行なっているクライアントのホスト名 (もしあれば)
Remote_Addr リクエストを行なっているクライアントの IP アドレス
Server_Addr リクエストを受け取ったサーバの IP アドレス (2.0.43 以降のみ)
Remote_User 認証されたユーザ名 (もしあれば)
Request_Method 使用されているメソッド名 (GET, POST など)
Request_Protocol リクエストが行なわれたプロトコルの名前とバージョン
(例えば、"HTTP/0.9", "HTTP/1.1" など。)
Request_URI URL のスキームとホストの後の部分
リクエストと関連付けられる環境変数のリスト
□regexは
Perl互換の正規表現で指定するか、次のいずれかで指定します
varname か
!varname か
varname=value
■BrowserMatchディレクティブと推奨設定
□下記の行を入れ、古いブラウザ等に対してプロトコルの動作を変更するのが推奨のようです
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
特別な目的の環境変数
http://guide.georgetown.edu/manual/ja/env.html
downgrade-1.0 リクエストがHTTP/1.0 より新しいプロトコルの場合でも、HTTP/1.0 として扱われます
force-response-1.0 HTTP/1.0 リクエストを発行するクライアントに対しては 常に HTTP/1.0 で応答
nokeepalive これが設定されている場合は、KeepAlive を使用しないようにします
■例
例1 画像へのリクエストをアクセスログに記録しない
SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request
例2 参照元のページがウェブサイト www.mydomain.com にあるときに intra_site_referral を設定
SetEnvIf Referer www\.mydomain\.com intra_site_referral
例3 127.0.0.1からのアクセス以外のログを取る
SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
CustomLog logs/access_log common env=!dontlog
例4 英語圏のリクエストとそうでないリクエストのログを分けて取る
SetEnvIf Accept-Language "en" english
CustomLog logs/english_log common env=english
CustomLog logs/non_english_log common env=!english
例5 他のWEBサイトから画像ファイルへの直接リンクをさせない
(/web/images ディレクトリ内の中に画像ファイルがあると仮定します)
SetEnvIf Referer "^http://www.example.com/" local_referal
# Allow browsers that do not send Referer info
SetEnvIf Referer "^$" local_referal
<Directory /web/images>
Order Deny,Allow
Deny from all
Allow from env=local_referal
</Directory>
前へ トップへ