2012-02-14 10 views
1

私はウェブサーバーの前にnginxロードバランサを持っているので、REMOTE_ADDRヘッダーはロードバランサのIPによって上書きされています。HTTP_X_REAL_IPを.htacess authで使用する

元のIPアドレスはHTTP_X_REAL_IPヘッダーにあります。私はルールを書き直してヘッダーを取得できるのは知っていますが、.htaccess Authメソッドの許可内でhttpヘッダーを使用する方法もありますか?

<Directory "/path/*"> 
    AuthType Basic 
    AuthName "Authentication Required" 
    AuthUserFile "/path/authfiles/www-app" 
    Require valid-user 
    ... 
    Allow from HTTP_X_REAL_IP 
</Directory> 

私はグーグルを試みましたが、setifenv(試してみました)とルールを書き直しました。

答えて

1

Allowは、あなたがそれにHTTPヘッダーを渡すことはできませんが、それは、環境変数を受け入れないあなたに感謝します。 envを見ることができるはずです。変数はRewriteCond/RewriteRuleです。私はそれをテストしていませんが、このような何かは仕事ができる:

RewriteCond %{HTTP:HTTP_X_REAL_IP} ^.+$ 
RewriteRule .* - [env=real_ip:%0] 
Allow from env=real_ip 
+0

あなたは、私が唯一の特定のIPを許可することができますどのように説明することができます? RewriteCond%{HTTP:HTTP_X_REAL_IP} 213.xxx.xxx.xxx RewriteRule。* - [E = real_ip:%0] 許可するE = real_ip –

+0

このユースケースを理解しているかどうかはわかりませんが、 '^。+ $'部分をあなたが望む正規表現に変更することができます。たとえば、 '^ 213。+ $'です。 –

0

使用この:

SetEnvIf X-Forwarded-For ^(%IP1|%IP2|%IP3)$ let_me_in 
Allow from env=let_me_in 

どこ%IP1、IP2%、%のIP3 - あなたのIPアドレスを。

確かに、あなたが望むように正規表現を変更したり、ひとつのIPと交換、またはそれ以上ここで読むことができます:私はそれを試みたがまし http://httpd.apache.org/docs/trunk/mod/mod_access_compat.html

関連する問題