语法: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;
}