這些模組預設會全部編譯進Nginx,除非手工指定某個模組在configure時排除。
這個模組創建一些變數,其值依賴于用戶端的IP位址:
如下例:
geo $geo { default 0; 127.0.0.1/32 2; 192.168.1.0/24 1; 10.1.0.0/16 1;}
指令
geo
語法:geo [$ip_variable] $variable { ... }
預設值:none
使用欄位:HTTP
這個指令指定了一個用戶端IP的所屬國家,預設情況下它會查找$remote_addr變數,但在0.7.27版本以後可以手工指定。
geo $arg_remote_addr $geo { ...; }
使用CIDR位址格式,另外,有4個特殊的參數:
delete - 刪除指定的網路(0.7.23) default - 將一些沒有定義的位址替換為0.0.0.0/0。 include - 具有位址資訊的文字檔,可以包含多個。 proxy - 指定代理伺服器位址(0.8.7)。 ranges - 指定使用以位址集區的形式定義位址(0.7.23),這個參數必須放在首位。 geo $country { default no; include conf/geo.conf; 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將為「ru」,而不是「us」。
一個使用ranges的例子:
geo $country { ranges; default no; 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; }