nginx で HTTP ホストごとに単一の IP からのアクセスを制限するにはどうすればよいですか?

nginx で HTTP ホストごとに単一の IP からのアクセスを制限するにはどうすればよいですか?

それぞれ独自のホストを持つ複数の Web サイトを持つサーバーがあります。

nginx で、特定の Web サイト (特定のホスト/ドメイン名)へのアクセスをブロックし0.0.0.0/0、特定の IP を許可する方法はありますか?1.2.3.4/32

例えば:

  • HTTP リクエストにホスト ヘッダーが付いている場合は、www.something-public.comすべて許可します。
  • HTTP リクエストにホスト ヘッダーが付いている場合は、www.something-private.comすべてを拒否し、特定の IP アドレスを許可します。

.htaccess私が抱えているもう 1 つの問題は、Web サイトの所有者が信頼されていないため、Web サイトのディレクトリ内の構成ファイル (親ディレクトリの設定を上書きするファイルなど) を介して変更できないように、このルールで制限したいということです。

答え1

モジュールngx_http_アクセスモジュールサーバー ブロックに配置できる allow コマンドと deny コマンドがあります。

server {
  server_name www.something-public.com;
  allow all; // I think this is the default and the statement is not needed
}

server {
  server_name www.something-private.com;
  allow 192.168.1.1/32;
  deny  all;
}

関連情報