使用nginx的geo模块对指定IP做URL重写,VPS使用,VPS一键脚本,微评马 - VPS主机点评

使用nginx的geo模块对指定IP做URL重写


admin 发布于 2014-09-19 16:37     评论:0    浏览:6001

使用nginx的geo模块对指定IP做URL重写

当用户访问时候,geo模块先对用户ip进行匹配,然后将匹配到的结果放在配置的变量名中。接着便可以对该变量内容进行判断,再做相应的动作。

下面的例子使得 IP 192.168.0.1 和 192.168.0.10 访问 /download/ 目录时,将变量 $test_ip 设置为1(默认为0),根据策略,重写URL到 /download.test。

## file nginx.conf
http {
    ...
    include "test.conf";
}

server {
    ...

    if ($test_ip) {
        rewrite ^/download/(.*)$ /download.test/$1;
    }

    ...
}

## file test.conf
geo $test_ip {
  default 0;
  192.168.0.1/32 1;
  192.168.0.10/32 1;
  ...
}
第2个例子:针对不同的ip段,访问代理到不同的主机

http {
    geo $geo {
        default default;
        192.168.1.0/24 cn;  
        192.168.2.0/24 us; 
        192.168.3.0/24 tw;  
    }

    upstream cn.server {
        server 192.168.0.101; ## cn用户访问的server
    }
    upstream us.server {
        server 192.168.0.102; ## us用户访问的server 
    }
    upstream tw.server {
        server 192.168.0.103; ## tw用户访问的server 
    }
    upstream default.server {
        server 192.168.0.100; ## 其他用户访问的server
    }
}

server {
    listen 80;
    server_name www.test.com;
    index index.html index.htm;
    root html;

    location / {
        proxy_redirect off;
        proxy_set_header Via "nginx";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        ## 不同IP段的用户Proxy到不同的主机
        proxy_pass http://$geo.server$request_uri; 
    }
}
原文链接是:http://lumte.com/?p=282
1 顶一下
如果您要进行评论信息,请先 登录 或者 快速注册 。