訪問者をその「ホスト」に応じて特定の http サービスに誘導するにはどうすればよいでしょうか?

訪問者をその「ホスト」に応じて特定の http サービスに誘導するにはどうすればよいでしょうか?

nginx 構成を使用して、ユーザーをさまざまな Web サービスに誘導したいと考えています。

シナリオは、 から のホスト名を持つ内部ユーザーに対しては192.168.1.1Web192.168.1.255サービスを提供したいが、他の外部訪問者に対してはこれを実現したくないというものです。

この機能を有効にするために使用できることはわかっていますIP_TABLESが、IP_TABLE ルールは主にファイアウォールの目的で使用しているため、この構成と混在させたくありません。

で利用できる設定はありますかnginx.conf?

答え1

GEO モジュールをマップ ディレクティブと一緒に使用できます。

http {
  geo $special_service {
    default 0;
    192.168.1.0/24 1;
  }
  server {
    if ($special_service) {
      return 302 $scheme://$server_name/special-service/;
    }
  }
}

答え2

location機密コンテンツをカバーする別のブロックを作成します。

設定ディレクティブは継承されないことに注意してください。コンテンツに必要な既存の `location にあるものはすべて、新しいブロックに含める必要があります。

location /path/to/sensitive/stuff {
    # any other config that you need goes here..
    # ...
    allow 192.168.1.0/24;
    deny all;
}

関連情報