nginx x-forwarded-forでアクセス制限

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が文字なのは、深い意味は無い。

タイトルとURLをコピーしました