ホームページ >運用・保守 >Nginx >Nginx を使用して IP アドレスベースのアクセス制御を実装する方法

Nginx を使用して IP アドレスベースのアクセス制御を実装する方法

王林
王林オリジナル
2023-08-02 12:05:112910ブラウズ

Nginx を使用して IP アドレスに基づくアクセス制御を実装する方法

はじめに:
ネットワーク セキュリティでは、IP アドレスによるアクセス制御が一般的な方法です。高性能 Web サーバーとして、Nginx は IP アドレスに基づくアクセス制御をサポートする対応するモジュールも提供します。この記事では、Nginx を使用して IP アドレスベースのアクセス制御を実装する方法を紹介し、対応するコード例を添付します。

1. Nginx アクセス制御モジュール
Nginx は、さまざまな機能を実装するための多くのモジュールを提供します。もちろん、IP アドレスベースのアクセス制御を実装するには、Nginx アクセス制御モジュールを使用する必要があります。一般的に使用される Nginx アクセス制御モジュールは 2 つあります。

  1. ngx_http_access_module: このモジュールは、構成ファイルを通じてクライアントへのアクセス権を制御でき、特定の IP アドレスまたは IP アドレス セグメントへのアクセスを許可または拒否できます。 。
  2. ngx_http_geo_module: このモジュールは、クライアントの地理的位置情報に基づいてアクセス制御を実行し、特定の領域へのアクセスを許可または拒否できます。

以下では、これら 2 つのモジュールの使用方法について説明します。

2. ngx_http_access_module を使用して IP アドレスベースのアクセス制御を実装する
ngx_http_access_module モジュールは、Nginx 構成ファイルの http、サーバー、またはロケーション構成ブロックに許可ディレクティブと拒否ディレクティブを追加することで、IP アドレスベースのアクセスを実装できます。コントロール。

たとえば、IP アドレス 192.168.0.1 のクライアントのサーバーへのアクセスを許可し、IP アドレス 192.168.0.2 のクライアントのサーバーへのアクセスを拒否する場合は、次のように構成できます。 :

http {
  server {
    listen       80;
    server_name  localhost;
    
    location / {
      deny 192.168.0.2;
      allow 192.168.0.1;
      deny all;
    }
  }
}

上記の設定では、deny ディレクティブは特定の IP アドレスへのアクセスを拒否するために使用され、allow ディレクティブは特定の IP アドレスへのアクセスを許可するために使用されます。 「すべて拒否」は、許可リスト内の IP アドレスを除き、他の IP アドレスが拒否されることを意味します。

3. ngx_http_geo_module を使用して IP アドレスベースのアクセス制御を実装する
ngx_http_geo_module モジュールは、http、server、または location 構成ブロックに geo ディレクティブと geoip_country ディレクティブを追加することで、IP アドレスベースのアクセス制御を実装できます。 Nginx 設定ファイルのアクセス制御。

まず、構成ファイルの http ブロックで geoip_country ディレクティブを使用して、IP 地理的位置データベース ファイルをロードする必要があります。例:

http {
  geoip_country /path/to/GeoIP.dat;
}

次に、次のように geo ディレクティブを使用します。対応するサーバーまたはロケーション構成ブロック IP アドレスに対応する国を照合し、必要に応じてアクセス制御を実行します。たとえば、中国本土の IP アドレスのみにサーバーへのアクセスを許可したい場合は、次の方法でサーバーを構成できます。

http {
  server {
    listen       80;
    server_name  localhost;
    
    location / {
      geo $country {
          default 0;
          CN 1;
      }
      
      if ($country = 0) {
          return 403;
      }
    }
  }
}

上記の構成では、地理ディレクティブを使用して対応する国を取得します。 IP アドレスと $country 変数に基づくコード。これが取得された国コードです。 if ($country = 0) は、取得した国コードが 0 (中国本土以外の IP アドレスを示す) の場合、403 エラー ページが返されることを意味します。

結論:
Nginx のアクセス制御モジュールを使用すると、IP アドレスに基づいたアクセス制御を簡単に実装できます。適切な構成により、サーバーのセキュリティと安定性が向上し、不正な IP アドレスによるアクセスからサーバーを保護できます。この記事が、Nginx のアクセス制御モジュールの理解と使用に役立つことを願っています。

参考資料:

  1. Nginx 公式ドキュメント: http://nginx.org/en/docs/http/ngx_http_access_module.html
  2. Nginx 公式ドキュメント: http ://nginx.org/en/docs/http/ngx_http_geo_module.html

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

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