ホームページ >運用・保守 >Nginx >Nginx がリクエストソース IP に基づいてアクセス制御構成を実装する方法

Nginx がリクエストソース IP に基づいてアクセス制御構成を実装する方法

WBOY
WBOYオリジナル
2023-11-08 10:09:21885ブラウズ

Nginx がリクエストソース IP に基づいてアクセス制御構成を実装する方法

Nginx がリクエストソース IP に基づいてアクセス制御構成を実装する方法、具体的なコード例が必要です

ネットワーク アプリケーション開発では、サーバーを悪意のある攻撃から保護することが非常に重要ですワンリングを攻撃する。 Nginx をリバース プロキシ サーバーとして使用すると、IP アクセス制御を構成して特定の IP アドレスへのアクセスを制限し、サーバーのセキュリティを向上させることができます。この記事では、Nginx でリクエスト元 IP に基づいたアクセス制御構成を実装する方法と、具体的なコード例を紹介します。

まず、Nginx 構成ファイルを編集する必要があります。通常、このファイルは /etc/nginx/nginx.conf にあります。このファイルには、グローバル Nginx 構成を含む「http」というブロックがあります。次のコードをブロックに追加する必要があります。

http {
    # 定义一个名为“block_ip”的map,用于存储需要屏蔽的IP地址
    map $remote_addr $block_ip {
        default 0;  # 默认情况下,不屏蔽任何IP地址
        192.168.0.100 1;  # 需要屏蔽的IP地址,值设为1
        192.168.0.101 1;  # 需要屏蔽的IP地址,值设为1
    }
    
    # 定义一个名为“block_ips”的变量,通过内部重定向的方式使用“block_ip”进行判断
    set $block_ips "";
    if ($block_ip = 1) {
        set $block_ips "block";
    }
    
    # 在server块中添加访问控制配置,只允许没有被屏蔽的IP地址访问
    server {
        listen 80;
        server_name example.com;
        
        # 添加对block_ips变量值的判断
        if ($block_ips = "block") {
            return 403;
        }
    }
}

上記のコードでは、まずブロックする必要がある IP アドレスを保存するために「block_ip」という名前のマップを定義します。デフォルトでは 0 に設定されており、IP アドレスはブロックされません。必要に応じて、特定の IP アドレスを 1 に設定して、その IP アドレスをブロックする必要があることを示すことができます。

次に、「block_ips」という変数を定義し、内部リダイレクトによる判定に「block_ip」を使用します。まず、変数を空に設定します。次に、if ステートメントを使用して、「block_ip」の値が 1 に等しいかどうかを判断します。その場合は、「block_ips」を「block」に設定します。

最後に、アクセス制御構成がサーバー ブロックに追加されます。 listen ディレクティブを使用してリスニング・ポート番号を指定し、server_name ディレクティブを使用してドメイン名または IP アドレスを指定します。 if ステートメントでは、「block_ips」の値が「block」と等しいかどうかを判断します。その場合は、403 Forbidden 応答を返します。

上記のコードは単なる例であり、Nginx でリクエスト ソース IP に基づいてアクセス制御構成を実装する方法を示すためにのみ使用されます。ブロックする必要があるIPアドレスの追加、リスニングポート番号やドメイン名の変更など、実際のニーズに応じて適切な設定を行ってください。

要約すると、Nginx はマップと変数を使用することで、リクエスト元 IP に基づいたアクセス制御を簡単に実装できます。設定ファイル内で対応する設定を行うことで、特定の IP アドレスへのアクセスを制限でき、サーバーのセキュリティが向上します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。