• ホーム
  • サーバ
  • Apache
  • モジュール
  • mod_setenvif
  • 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>
    
    

    前へ  トップへ inserted by FC2 system