Amazon EC2でロードバランサを使っていると、セキュリティグループでのIP制限がきかない。
そりゃそうだよね、ロードバランサいるんだから。
インスタンス内でIP制限する必要がある。
接続元のIPは、X-FORWARDED-FORヘッダに入っているので、この値を見て制限をかければよいということらしい。
今回はnginxを使ったので、こんな感じ。
set $allow "false";
if ($http_x_forwarded_for ~ " ?111\.111\.111\.111$" ) { set $allow "true"; }
if ($http_x_forwarded_for ~ " ?22\.22\.22\.22$") { set $allow "true"; }
if ($allow = "false") {
return 403;
}
andとかorとかif分のネストとかできないnginxの設定ファイルなので、フラグを使っております。
trueとfalseが文字なのは、深い意味は無い。