天天看點

ngx_http_geo_module 子產品

Need mission critical support for nginx?
Prioritize. Save time. Stay focused.
ngx_http_geo_module 子產品

ngx_http_geo_module 子產品

english

русский

簡體中文

עברית

日本語

türkçe

新聞 [en]

nginx 介紹

下載下傳 [en]

安全漏洞 [en]

文檔

FAQ

外部連接配接 [en]

書籍 [en]

支援 [en]

捐獻 [en]

trac

wiki

twitter

nginx.com

翻譯内容可能已經過舊。 你可以通過 英文版本 檢視最近的更新。

配置示例

指令

geo

ngx_http_geo_module

子產品建立變量,并根據用戶端IP位址對變量指派。

geo $geo {
    default        0;
    127.0.0.1/32   2;
    192.168.1.0/24 1;
    10.1.0.0/16    1;
}
      

文法:

geo [

$address

]

$variable

{ ... }

預設值:
上下文:

http

定義從指定的變量擷取用戶端的IP位址。預設情況下,nginx從

$remote_addr

變量取得用戶端IP位址,但也可以從其他變量獲得(0.7.27版),比如:
geo $arg_remote_addr $geo {
    ...;
}
      
如果該變量的值不能代表一個合法的IP位址,那麼nginx将使用位址“

255.255.255.255

”。

nginx通過CIDR或者位址段(0.7.23版)來描述位址,同時支援下面的特殊參數:

delete

删除指定網絡(0.7.23版)。

default

如果用戶端位址不能比對任意一個定義的位址,nginx将使用此值。 如果使用CIDR,可以用“

0.0.0.0/0

”代替

default

include

包含一個定義位址和值的檔案。可以多次包含。

proxy

定義可信位址(0.8.7,0.7.63版)。 如果請求來自可信位址,nginx将使用其“X-Forwarded-For”頭來獲得位址。 相對于普通位址,可信位址是順序檢測的。
從1.3.0和1.2.1版本起,nginx開始支援IPv6位址。

proxy_recursive

開啟遞歸查找位址(1.3.0,1.2.1版)。 如果關閉遞歸查找,在用戶端位址與某個可信位址比對時,nginx将使用“X-Forwarded-For”中的最後一個位址來代替原始用戶端位址。 如果開啟遞歸查找,在用戶端位址與某個可信位址比對時,nginx将使用“X-Forwarded-For”中最後一個與所有可信位址都不比對的位址來代替原始用戶端位址。

ranges

訓示位址将定義為位址段的形式(0.7.23版)。這個參數應該第一個被定義。為了加速裝載位址庫,位址應按升序定義。
舉例:
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;
      
nginx将使用能最精确比對用戶端位址的配置中定義的值。比如,對于位址127.0.0.1,nginx會選取“

RU

”而非“

US

”,作為變量值。
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;
}