以下のことをnginxに設定したいです。
・基本すべてアクセス拒否
・特定のIP(複数)はbasic認証させてアクセスを許可
・特定IPはBasic認証しない
特定IP(複数)はAWSのELBをかませてるので
http_x_forwarded_forのIPを利用してIP制限を考えてます。
上記の要件をnginx.confで設定したいですが、
if文内にauth_basicを記述するとなぜかエラーになります。
多分僕の発想自体が間違ってるようです。
このような設定はnginxで普段どのように書けばよいか教えていただけますか。
以下は私が最初やろうとした設定です。
map $http_x_forwarded_for $allowed { default deny; ~\s*xx.xx.xxx.xxxx$ allow; } map $http_x_forwarded_for $allowed2 { default deny; ~\s*xx.xx.xxx.xxxx$ allow; } server { location / { #基本すべてアクセス拒否 if ( $allowed = "deny" ) { return 403; } if ( $allowed2 = "deny" ) { return 403; } #特定のIP(複数)はbasic認証させてアクセスを許可 if ( $allowed = "allow" ) { proxy_pass http://xx.xx.xx; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_basic "basic authentication"; auth_basic_user_file /etc/nginx/.htpasswd; } #特定IPはBasic認証しない if ( $allowed2 = "allow" ) { proxy_pass http://xx.xx.xx; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。