ロードバランサーを考慮したApacheのIP制限
ロードバランサー経由のIP制限
サイトのリダイレクト設定時、テスト用に自己IPのみ対象外にしようと.htaccessを設定したが、うまくいきませんでした。
<IfModule mod_rewrite.c> RewriteCond %{REMOTE_ADDR} !^192\.0\.2\.0$ # 対象IP除外 RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L] </IfModule>
ウェブサーバーがロードバランサー経由で接続されているため、接続元IPアドレスはHTTPヘッダフィールド経由で取得すればよいようです。
「X-Forwarded-For」を設定することでうまくいきました。
<IfModule mod_rewrite.c> RewriteCond %{HTTP:X-Forwarded-For} !^192\.0\.2\.0$ # 対象IP除外 RewriteRule ^(.*)$ https://example.com%{REQUEST_URI} [R=301,L] </IfModule>
その他
BASIC認証とIP制限の組み合わせについても、同じような設定でできるようです。
<RequireAll> #BASIC認証 AuthType Basic AuthUserFile /var/www/example.com/.htpasswd AuthGroupFile /dev/null AuthName "Authorization Required" #除外対象IP設定 SetEnvIf X-Forwarded-For "192\.0\.2\.0" allowedip <RequireAny> Require env allowedip #対象IP除外 Require valid-user </RequireAny> <RequireAll>