Nginx がリクエスト元ドメイン名に基づいてアクセス制御設定を実装する方法

WBOY
リリース: 2023-11-08 09:06:48
オリジナル
1602 人が閲覧しました

Nginx がリクエスト元ドメイン名に基づいてアクセス制御設定を実装する方法

Nginx がリクエスト ソース ドメイン名に基づいてアクセス制御構成を実装する方法には、特定のコード サンプルが必要です

Nginx は、高性能 Web サーバー ソフトウェアです。ファイル サーバーは、柔軟なアクセス制御を実現するように構成することもできます。この記事では、Nginx を使用してリクエスト元ドメイン名に基づいたアクセス制御設定を実装する方法と、具体的なコード例を紹介します。

Nginx 構成ファイルは通常、/etc/nginx/nginx.conf にあり、関連する構成をこのファイルに追加できます。基本的な Nginx 設定ファイルの例を次に示します。

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://localhost:8000;
        }
    }
}
ログイン後にコピー

上記の例では、ポート 80 をリッスンし、すべてのリクエストをローカル ポート 8000 に転送します。この構成では、server_name ディレクティブを使用して、リクエストを受け入れるドメイン名を指定します。デフォルトでは、Nginx はすべてのドメイン名からのリクエストを受け入れます。リクエストソースのドメイン名に基づいてアクセス制御設定を実装したい場合は、if ディレクティブを $request_header と組み合わせて使用​​してこれを実現できます。

以下は例です:

http {
    server {
        listen 80;

        if ($http_host ~* "^(www.)?example.com$") {
            location / {
                proxy_pass http://localhost:8000;
            }
        }

        if ($http_host ~* "^(www.)?example2.com$") {
            return 403;
        }
    }
}
ログイン後にコピー

上記の例では、2 つの if 命令を使用して、要求元のドメイン名に基づいたアクセス制御構成を実装しています。最初の if ブロックでは、$http_host 変数を使用して example.com ドメイン名と照合し、リクエストをローカル ポート 8000 に転送します。 2 番目の if ブロックでも、$http_host 変数を使用して example2.com ドメイン名と照合し、403 エラーを返します。

Nginx で if 命令を使用するとパフォーマンスが低下することに注意してください。可能であれば、ドメイン名の照合に正規表現を使用し、より効率的な構成を実現するために location ディレクティブを使用することをお勧めします。

if ディレクティブの使用に加えて、Nginx は、ngx_http_access_module モジュール、ngx_http_auth_basic_module モジュールなど、より複雑なアクセス制御構成を実装するための他の多くのディレクティブやモジュールも提供します。実際のニーズに応じて、適切な構成方法を選択できます。

要約すると、リクエスト元のドメイン名に基づくアクセス制御設定は、Nginx を通じて実装できます。 if ディレクティブと設定ファイルの $http_host 変数を組み合わせて使用​​することで、要求されたドメイン名に基づいて条件判断を行うことができ、柔軟なアクセス制御が実現します。もちろん、パフォーマンスを確保するには、適切な構成方法を選択し、他のモジュールと組み合わせて、より複雑な制御要件を実現することをお勧めします。

以上がNginx がリクエスト元ドメイン名に基づいてアクセス制御設定を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート