Nginx Geo模块
Posted On 2019年5月28日 By liang
Geo模块:默认编译进Nginx , 通过–without-http_geo_module禁用。
Geo功能:根据IP地址创建新变量。
Geo指令
Syntax: geo [$address] $variable { ... }
Default: ---
Context: http
规则:
1、如果geo指令不输入$address ,那么默认使用$remote_addr 变量作为IP地址 。
2、{} 内的指令匹配:优先最长匹配
1、通过IP地址及子网掩码的方式,定义IP范围,当IP地址在范围内时新变量使用其后的参数值。
2、default指定了当以上范围都未匹配上时,新变量的默认值。
3、通过proxy指令指定可信地址,此时remote_addr的值为X-Forwarded-For头部值中的最后一个 IP地址。
4、proxy_recursive允许循环地址搜索。
5、include , 优化可读性。
6、delete 删除指定网络。
配置示例
geo $country {
default CN;
include conf/geo.conf;
proxy 192.168.20.248;
127.0.0.0/24 US;
127.0.0.1/32 RU;
10.1.0.0/16 UK;
}