nginxs

运维博客

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教程

第一章 nginx安装基本引导和进程信号

02-nginx IO模型

03-nginx负载均衡

04-nginx的root和alias区别

05-nginx limit_req和limit_conn_zone

06-nginx访问控制“限制ip”,“限制用户名”

09-nginx geo区域访问控制

nginxnginx geo模块nginx geo地域区分用户nginx geo模块访问控制geo模块访问模块

管理