モジュール ngx_http_geo_module
構成例 ディレクティブ geo |
ngx_http_geo_module
モジュールは、クライアントの IP アドレスに応じて値を持つ変数を作成します。
構成例
geo $geo { default 0; 127.0.0.1 2; 192.168.1.0/24 1; 10.1.0.0/16 1; ::1 2; 2001:0db8::/32 1; }
ディレクティブ
構文 |
geo [ |
---|---|
デフォルト | — |
コンテキスト |
http |
指定した変数の値がクライアントの IP アドレスに依存することを説明します。既定では、アドレスは $remote_addr
変数から取得されますが、別の変数 (0.7.27) から取得することもできます。たとえば
geo $arg_remote_addr $geo { ...; }
変数は使用した場合にのみ評価されるため、多数の「geo
」変数が宣言されていても、リクエストの処理に追加コストはかかりません。
変数の値が有効な IP アドレスを表していない場合、「255.255.255.255
」アドレスが使用されます。
アドレスは CIDR 表記(個々のアドレスを含む)のプレフィックスまたは範囲(0.7.23)として指定されます。
IPv6 プレフィックスはバージョン 1.3.10 および 1.2.7 以降でサポートされています。
以下の特殊パラメーターもサポートされています
delete
- 指定されたネットワークを削除します (0.7.23)。
default
- クライアントのアドレスが指定されたアドレスのいずれとも一致しない場合に変数に設定される値。アドレスが CIDR 表記で指定されている場合、
default
の代わりに「0.0.0.0/0
」と「::/0
」を使用できます。default
が指定されていない場合、デフォルト値は空の文字列になります。 include
- アドレスと値が記載されたファイルを含めます。インクルードは複数可能です。
proxy
- 信頼できるアドレスを定義します (0.8.7、0.7.63)。信頼できるアドレスからリクエストが来ると、「X-Forwarded-For」リクエストヘッダーフィールドのアドレスが代わりに使用されます。通常のアドレスとは異なり、信頼できるアドレスは順番にチェックされます。
信頼できる IPv6 アドレスは、バージョン 1.3.0 および 1.2.1 以降でサポートされています。
proxy_recursive
- 再帰的なアドレス検索を有効にします (1.3.0、1.2.1)。再帰的な検索が無効になっている場合、信頼できるアドレスの 1 つに一致した元のクライアントアドレスではなく、「X-Forwarded-For」で送信された最後のアドレスが使用されます。再帰的な検索が有効になっている場合、信頼できるアドレスの 1 つに一致した元のクライアントアドレスではなく、「X-Forwarded-For」で送信された最後の信頼されていないアドレスが使用されます。
ranges
- アドレスが範囲として指定されることを示します (0.7.23)。このパラメーターは最初にする必要があります。geo ベースのロードを高速化するには、アドレスを昇順に並べます。
例
geo $country { default ZZ; include conf/geo.conf; delete 127.0.0.0/16; proxy 192.168.100.0/24; proxy 2001:0db8::/32; 127.0.0.0/24 US; 127.0.0.1/32 RU; 10.1.0.0/16 RU; 192.168.1.0/24 UK; }
conf/geo.conf
ファイルには、以下の行を含めることができます
10.2.0.0/16 RU; 192.168.2.0/24 RU;
最も具体的に一致した値が使用されます。たとえば、127.0.0.1 アドレスの場合、「US
」ではなく、「RU
」が選択されます。
範囲を使用した例
geo $country { ranges; default ZZ; 127.0.0.0-127.0.0.0 US; 127.0.0.1-127.0.0.1 RU; 127.0.0.1-127.0.0.255 US; 10.1.0.0-10.1.255.255 RU; 192.168.1.0-192.168.1.255 UK; }