这些模块默认会全部编译进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; }