翻譯内容可能已經過舊。 你可以通過 英文版本 檢視最近的更新。 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;
}
|