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

Nginx がリクエストソースの地理的位置に基づいてアクセス制御構成を実装する方法

王林
王林オリジナル
2023-11-08 11:18:261139ブラウズ

Nginx がリクエストソースの地理的位置に基づいてアクセス制御構成を実装する方法

Nginx がリクエスト ソースの地理的位置に基づいてアクセス制御構成を実装する方法には、特定のコード例が必要です

はじめに:
インターネットの発展に伴い、ユーザーはさまざまな地域で Web サイトにアクセスするのが当たり前になっています。場合によっては、リクエストの地理的位置に基づいて、ターゲットを絞ったアクセス制御構成を実行したいことがあります。高性能リバース プロキシ サーバーとして、Nginx は負荷分散と HTTP キャッシュを実装できるだけでなく、リクエストの送信元の地理的位置に基づいてアクセス制御を構成することもできます。この記事では、Nginx を使用してリクエスト ソースの地理的位置に基づいたアクセス制御構成を実装する方法を紹介し、具体的なコード例を示します。

1. リクエストのソースの地理的位置を取得する
リクエストのソースの地理的位置に基づいてアクセス制御設定を実装する前に、リクエストのソースの地理的位置情報を取得する必要があります。リクエスト。一般的な方法は、サードパーティの IP データベースを使用して、要求された IP アドレスに対応する地理的位置を照会することです。

1.1 IP データベースのダウンロード
まず、IP アドレスと地理的位置の間のマッピング関係が含まれる IP データベースをダウンロードする必要があります。現在、より一般的に使用されている IP データベースには、MaxMind の GeoIP2 データベースや Taobao の IP データベースなどがあります。この記事では、デモのために MaxMind の GeoIP2 データベースを使用します。

GeoIP2 データベース ファイル (通常は .mmdb ファイル) を MaxMind 公式 Web サイトからダウンロードし、ローカルに保存できます。

1.2 GeoIP2 モジュールのインストール
次に、データベースを使用して、要求された IP アドレスに対応する地理的位置情報をクエリするために、GeoIP2 モジュールを Nginx にインストールする必要があります。

まず、Nginx ソース コード ディレクトリを開き、モジュール フォルダーの下にある ngx_http_geoip2_module ディレクトリに入ります。次のコマンドを実行して GeoIP2 モジュールをダウンロードします:

git clone https://github.com/leev/ngx_http_geoip2_module.git

次に、Nginx ソース コード ディレクトリに戻り、config コマンドを実行してコンパイル オプションを構成します:

./configure --add-module=modules/ngx_http_geoip2_module

最後に、make およびmake install コマンドを使用して Nginx をコンパイルしてインストールします。

1.3 GeoIP2 モジュールの構成
Nginx 構成ファイルでは、指定されたデータベース ファイルから IP アドレスの地理的位置情報をクエリするように Nginx に指示するように GeoIP2 モジュールを構成する必要があります。

http ブロックに次の構成を追加します:

geoip2 /path/to/your/database/GeoLite2-Country.mmdb {
    $geoip2_data_country_code country iso_code;
}

ここでの「/path/to/your/database/GeoLite2- Country.mmdb」は、ダウンロードした GeoIP2 データベース ファイルへのパスです。 。 「$geoip2_data_country_code」はクエリ結果を保存する変数です。「country」はクエリが国コードであることを示し、「iso_code」は結果が変数に保存されるフィールド名を示します。

  1. リクエスト ソースの地理的位置に基づくアクセス制御構成
    リクエストのソースの地理的位置情報を取得した後、必要に応じてアクセス制御を構成できます。

2.1 特定の地理的場所へのアクセスを許可する

location / {
    if ($geoip2_data_country_code = "CN") {
        allow;
    }
    deny;
}

この構成では、if ディレクティブと $geoip2_data_country_code 変数を使用して、要求された地理的場所が中国かどうかを判断します (コードは「CN」)。中国の場合はアクセスが許可され、中国の場合はアクセスが拒否されます。

2.2 特定の地理的場所へのアクセスを拒否する

location / {
    if ($geoip2_data_country_code = "US") {
        deny;
    }
    allow;
}

この構成では、要求された地理的場所が米国 (コードは「US」) の場合、アクセスは直接拒否されます。それ以外の場合、アクセスは直接拒否されます。許可されます。

2.3 その他のアクセス制御構成
国コードに基づくアクセス制御に加えて、特定の地理的位置情報に基づいて構成することもできます。たとえば、都市、緯度、経度などの情報に基づいてアクセス制御を実行できます。

location / {
    if ($geoip2_data_city_name = "Shanghai" && $geoip2_data_latitude > 31.2 && $geoip2_data_latitude < 31.3) {
        allow;
    }
    deny;
}

この構成では、要求された地理的場所が上海であり、緯度が 31.2 から 31.3 の間であるかどうかを判断します。条件が満たされる場合はアクセスが許可され、条件が満たされない場合はアクセスが拒否されます。

結論:
Nginx の GeoIP2 モジュールを使用すると、リクエスト ソースの地理的位置に基づいたアクセス制御構成を簡単に実装できます。まず、IP アドレスの地理的位置情報をクエリするために IP データベースをダウンロードしました。次に、GeoIP2 モジュールをインストールして構成し、Nginx がこのデータベースを使用して地理的位置情報をクエリできるようにします。最後に、クエリ結果に基づいてアクセス制御設定が実行され、リクエスト元の地理的位置に基づいたアクセス制御が実装されます。

もちろん、これは単なる単純な例であり、実際のアプリケーション シナリオはさらに複雑になる可能性があります。実際の運用では、HTTPリバースプロキシやロードバランシングなどの他のモジュールや機能を組み合わせて、より柔軟かつ効率的なアクセス制御構成を実現することもできます。

コード例:

geoip2 /path/to/your/database/GeoLite2-Country.mmdb {
    $geoip2_data_country_code country iso_code;
}

location / {
    if ($geoip2_data_country_code = "CN") {
        allow;
    }
    deny;
}

上記は、Nginx を使用してリクエスト ソースの地理的位置に基づいたアクセス制御構成を実装する詳細な紹介と具体的なコード例です。このようにして、リクエストの地理的位置に基づいてアクセスを簡単に制御し、Web サイトのセキュリティと信頼性を向上させることができます。この記事がお役に立てば幸いです!

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

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