首页 > 代码库 > Nginx根据客户端版本号跳转至后台相应服务器

Nginx根据客户端版本号跳转至后台相应服务器

 Nginx通过客户端的APP版本号来判定跳转后台对应的版本号的服务器,配置如下: 

upstream appserver{

       server 10.9.14.1:799  weight=5;

     }

    server {

       listen 80;

       server_name uatv2.yaok.com;

       charset utf-8;

       access_log  logs/uat.yaok.com.log  logstash_json;

       location ^~ /appapi/ {

               set $newIp "10.7.4.49:8180";   

               if ($http_appVersion  = "1.4.0"){

                  set $newIp "10.9.54.128:799";

               } 

#以上代码意思是,如果客户端版本是1.4.0,则跳转至10.9.54.128:799,否则跳转至10.7.4.49:8180这台服务器

                proxy_pass "http://$newIp";

                proxy_redirect off;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

       }

       location ^~ /pay/ {

                proxy_pass http://appserver/pay/;

                proxy_redirect off;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

        location ^~ /uploadapi/ {

                proxy_pass http://appserver/uploadapi/;

                proxy_redirect off;

                proxy_set_header X-Real-IP $remote_addr;

                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

        location / {

           rewrite ^/(.*)$ //$1 last;

       }

#这段要放在未尾才能跳转成功

    }

检查结果:

技术分享

版本为1.4.0的返回的状态码为200,1.4.0有这个接口

技术分享

版本不是为1.4.0的返回404状态码。

因为两个版本的接口不一样,所以返回的状态码不一样

Nginx根据客户端版本号跳转至后台相应服务器