@Konboi memo

主に技術に関してつらつらと。

nginxでIP制限する際に嵌った。

はじめに

マスタリングNginx

マスタリングNginx

管理画面など、特定のIPアドレスからのみアクセスを許可したいのはよくあると思います。

今日は、その設定で嵌ったのでメモしておきます。 今回は、 サンプルとして /admin へのアクセスをIP制限したいと思います。

嵌った設定

/admin {
  allow 123.456.789; # 許可するIP
  deny all;

  proxy_pass http://example.local
}

この設定の意図としては、 123.456.789 というIPはアプリケーションサーバーへアクセスでき、それ以外のIPのものは403になるというものでした。

が、 123.456.789 IP以外からもdeny all をすり抜け管理画面にアクセスできてしまいました。

同僚が仮想マシンに同様の環境を構築して調査してもらいましたが、

その際はきちんとアクセス制限できていたので、なぜこの方法でアクセス制限ができないのかは、未だに謎です。

解決方法

それでどうやって解決したかというと

if ($remote_addr ~* “123.456.789”) {
  proxy_pass http://example.local
  break;
}

remote_addr と if と組み合わせることで、アクセス制限を行いました。

こちらの方法では、問題なくアクセス制限をすることができました。

まとめ

  • 嵌った方法で設定できないのが、謎。
  • とりあえず、設定はできたのでよい。