動かざることバグの如し

殿、温めておいたバグがこちらでございます

nginxの多段プロキシ構成でIP制限を行いたい

環境

nginxのサーバーが2台あったとして

ユーザー - インターネット - [nginx1] - [nginx2] - [rails]

みたいな構成になっていたとき、nginx1ではなくnginx2側(バックエンド)で特定のIPのみ許可して、他のIPを弾きたい。

設定

例えば8.8.8.8からのアクセスのみ許可したい場合は

set $allow "ng";
if ($http_x_forwarded_for ~ " ?8\.8\.8\.8$" ) { set $allow "ok"; }
if ($allow = "ng") {
  return 403;
}

をnginxのserverブロック内に追加すればおk $allowの変数名もok ng の文字列は任意で(