ホームページ >運用・保守 >Nginx >Nginx リバースプロキシのホワイトリストベースのアクセス制御構成

Nginx リバースプロキシのホワイトリストベースのアクセス制御構成

WBOY
WBOYオリジナル
2023-06-10 08:28:442180ブラウズ

Nginx は、安定性と拡張性の利点を備えた高性能 HTTP サーバーおよびリバース プロキシ サーバーです。悪意のあるユーザーや悪意のあるプログラムから Web サーバーを保護するために、多くの企業や組織はアクセス制御対策を導入しています。この記事では、Nginx のホワイトリストを通じてリバース プロキシ アクセスを制御する方法を紹介します。

1. リバース プロキシとは何ですか?

リバース プロキシとは、Web サーバーをプロキシ サーバーのグループの背後に隠す Web サーバー構成方法を指します。リバース プロキシ サーバーのアドレスはクライアントに表示され、クライアントの要求を実際の Web サーバーに転送し、Web サーバーの応答をクライアントに返す役割を果たします。リバース プロキシを使用すると、Web サーバーのスループットが向上し、攻撃を防ぐことができます。

2. アクセス制御はなぜ必要なのでしょうか?

Web サーバーは通常、世界中からのアクセスにさらされており、一部のリクエストは悪意のあるユーザーまたは悪意のあるプログラムから送信される可能性があります。これらの悪意のあるリクエストは、Web サーバーの麻痺、データ漏洩、改ざん、機密情報の盗難などのセキュリティ問題を引き起こす可能性があります。これらの問題を防ぐには、通常、特定の IP アドレス、ドメイン名、またはユーザーのみが Web サーバーにアクセスすることを制限するアクセス制御メカニズムを実装する必要があります。

3. Nginx はホワイトリストに基づいたアクセス制御をどのように実装しますか?

  1. アクセスを許可する IP アドレスを定義する

nginx.conf 構成ファイルで、allow ディレクティブを使用して、許可する IP アドレスを指定できます。アクセスするには、たとえば次のようにします。

http {
    #定义白名单
    geo $whitelist {
        default 0;
        10.0.0.0/8 1;
        192.168.0.0/16 1;
    }

    server {
        listen 80;
        server_name example.com;
        location / {
            #指定允许访问的IP地址
            allow $whitelist;
            #禁止其他IP地址的访问
            deny all;
            #...
        }
    }
}

上記の設定ファイルでは、 geo ディレクティブを使用してホワイトリストを定義します。このうち$whitelistはアクセスを許可するIPアドレスを示す変数です。デフォルトでは、$whitelist の値は 0 で、アクセスが許可されていないことを示します。アクセスされた IP アドレスが 10.0.0.0/8 または 192.168.0.0/16 ネットワーク セグメント内にある場合、$whitelist の値は 1 になり、アクセスが許可されます。この場所では、allow ディレクティブを使用して $whitelist 変数内の IP アドレスへのアクセスが許可されるように指定し、deny ディレクティブを使用して他の IP アドレスへのアクセスを禁止します。

  1. アクセスを許可するドメイン名を定義する

nginx.conf 構成ファイルで、server_name ディレクティブを使用して、許可されるドメイン名を指定できます。例:

http {
    #定义白名单
    server {
        listen       80;
        server_name  example.com;

        #允许访问的域名
        if ($host !~* ^(example.com)$ ) {
            return 403;
        }
        
        location / {
            #...
        }
    }
}

上記の設定ファイルでは、server_name ディレクティブを使用して、example.com ドメイン名へのアクセスのみが許可されるように指定します。 location では、要求されたドメイン名が example.com ではない場合、403 エラーが直接返されます。

  1. アクセスを許可するユーザーの定義

nginx 構成ファイルでは、HTTP 基本認証またはその他の認証メカニズムを使用して、認証されたユーザーのみが Web サーバーにアクセスすることを制限できます。たとえば、HTTP 基本認証を使用すると、ユーザー名とパスワードを暗号化して HTTP ヘッダーに配置でき、Nginx がリクエストを認証し、認証されたユーザーのみが Nginx サーバーにアクセスできます。 nginx.conf 設定ファイルでは、auth_basic および auth_basic_user_file ディレクティブを使用して HTTP 基本認証を実装できます。例:

http {
    #定义白名单
    server {
        listen       80;
        server_name  example.com;

        #Nginx对请求进行认证
        auth_basic           "Restricted Area";
        auth_basic_user_file conf.d/.htpasswd;
        
        location / {
            #...
        }
    }
}

上記の設定ファイルでは、サーバーで auth_basic ディレクティブを指定してエリア情報を記述します。認証が必要です。 auth_basic_user_file ディレクティブを使用して、パスワード ファイルへのパスを指定します。認証されたユーザーのみが Web サーバーにアクセスできます。

4. 概要

リバース プロキシにより、Web サーバーのスループットが向上し、攻撃が防止されます。アクセス制御メカニズムにより、悪意のあるユーザーや悪意のあるプログラムからの攻撃から Web サーバーを保護できます。 Nginx では、ホワイトリスト ベースのアクセス制御を使用して、リバース プロキシ アクセスを制御し、Web サーバーのセキュリティを保護できます。必要に応じて、リバース プロキシのセキュリティを向上させるために、アクセスを許可する IP アドレス、ドメイン名、またはユーザーを定義できます。

以上がNginx リバースプロキシのホワイトリストベースのアクセス制御構成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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