ngx_stream_geo_module モジュール
設定例 ディレクティブ geo |
ngx_stream_geo_module
モジュール(1.11.3)は、クライアントの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 [ |
---|---|
デフォルト | — |
コンテキスト |
stream |
指定した変数の値の依存関係をクライアントのIPアドレスで記述します。デフォルトでは、アドレスは$remote_addr
変数から取得されますが、他の変数から取得することもできます(例)
geo $arg_remote_addr $geo { ...; }
変数は使用されたときにのみ評価されるため、大量の「geo」変数を宣言したとしても、接続処理に余分なコストが発生することはありません。
変数の値が有効なIPアドレスを表していない場合、「255.255.255.255」アドレスが使用されます。
アドレスは、CIDR記法のプレフィックス(個別のアドレスを含む)または範囲として指定します。
また、次の特別なパラメータもサポートされています。
delete
- 指定したネットワークを削除します。
default
- クライアントのアドレスが指定したアドレスのいずれにも一致しない場合、変数に設定される値です。アドレスがCIDR記法で指定されている場合、
default
の代わりに「0.0.0.0/0」および「::/0」を使用できます。default
が指定されていない場合、デフォルト値は空の文字列になります。 include
- アドレスと値を含むファイルをインクルードします。インクルードは複数可能です。
ranges
- アドレスを範囲として指定することを示します。このパラメータを最初に指定する必要があります。ジオベースの読み込みを高速化するために、アドレスは昇順で配置する必要があります。
例
geo $country { default ZZ; include conf/geo.conf; delete 127.0.0.0/16; 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; }