nginx根据url参数进行不同的代理

技术文档 - Linux 作者: xcheng1986 发布于:2016-11-23 阅读(780) (暂无评论)  

项目中由于产品迭代,新的版本不兼容旧的版本,但是又不能立马下线旧的版本,只能共存。
此时可以使用URL地址里面加版本号来区分,不同的版本号对应不同的产品版本。
例如,现在有8080,8081,8082三个版本,默认访问8080这个最老的版本。
配置nginx反向代理如下:
server {
        listen 80;
        server_name localhost;
        location / {
             set $proxyPort "8080";
             if ($arg_v = 1) {
                 set $proxyPort "8081";
             }
             if ($arg_v = 2) {
                 set $proxyPort "8082";
             }
             proxy_pass "http://127.0.0.1:$proxyPort";
        }
}
各版本配置:
server {
        listen 8080;
        server_name 8080;
        root /var/www/8080/;
        index index.html;
}
server {
        listen 8081;
        server_name 8081;
        root /var/www/8081/;
        index index.html;
}
server {
        listen 8082;
        server_name 8082;
        root /var/www/8082/;
        index index.html;
}
此时 ,访问http://hostname是走的端口号8080的代理,
访问http://hostname?v=1是走的端口号8081的代理,
访问http://hostname?v=2是走的端口号8082的代理.