09-nginx geo区域访问控制
2016/05/21 00:16 于 web 0
介绍
geo是nginx的地域模块, 管理人员可以通过用户的ip信息查询到地理位置,再根据地理位置提供更好的服务。
由于免费的地理位置库往往不会太准确,所以没有准确地理位置库,不建议使用nginx geo模块进行精准投放用户类的行为
举例1:
geo $geo {
default 0;
192.168.1.159 1;
192.168.1.128 2;
}
server {
listen 80;
server_name localhost;
root /usr/local/kafka/html;
if ($geo = 1) {
rewrite ^ http://new.nginxs.net;
}
if ($geo = 2) {
rewrite ^ http://www.nginxs.net;
}
描述:geo模块会把
192.168.1.159的 $geo=1最终跳转到new.nginxs.net
192.168.1.128的 $geo=2最终跳转到www.nginxs.net
其它的都是default $geo=0最终默认的正常访问
根据geo的值
语法: geo [$address] $variable { ... }
作用域: http
描述指定变量的值的依赖在客户端IP地址。默认情况下,地址是取自$ remote_addr变量,
介绍
geo是nginx的地域模块, 管理人员可以通过用户的ip信息查询到地理位置,再根据地理位置提供更好的服务。
举例1:
geo $geo {
default 0;
192.168.1.159 1;
192.168.1.128 2;
}
server {
listen 80;
server_name localhost;
root /usr/local/kafka/html;
if ($geo = 1) {
rewrite ^ http://new.nginxs.net;
}
if ($geo = 2) {
rewrite ^ http://www.nginxs.net;
}
描述:geo模块会把
192.168.1.159的 $geo=1最终跳转到new.nginxs.net
192.168.1.128的 $geo=2最终跳转到www.nginxs.net
其它的都是default $geo=0最终默认的正常访问
根据geo的值
语法: geo [$address] $variable { ... }
作用域: http
描述指定变量的值的依赖在客户端IP地址。默认情况下,地址是取自$ remote_addr变量,
举例2:
geo根据地域负载
http{
updtream BJ {
server 10.10.1.10:8080;
}
updtream SH {
server 10.10.2.10:8080;
}
updtream GZ {
server 10.10.3.10:8080;
}
updtream LO {
server 10.10.4.10:8080;
}
geo $country {
default BJ; # $country的默认值BJ
include conf/geo.conf; #包含conf/geo.conf配置
delete 127.0.0.0/16; #删除指定网络
proxy 192.168.100.0/24;
proxy 2001:0db8::/32;
127.0.0.0/24 SH; #设置 $country=SH
127.0.0.1/32 GZ; #设置 $country=GZ
10.1.0.0/16 BJ; #设置 $country=BJ
192.168.1.0/24 LO; #设置 $country=LO
}
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://$country;
access_log log/new.nginx.net.log main;
}
}
根据不同区域的用户访问不同服务器进行负载
range的用法
geoip_country /usr/local/nginx-new/GeoIP.dat; #读取IP位置库
geoip_city /usr/local/nginx-new/GeoLiteCity.dat;
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;
}
nginx教程