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 的详细介绍请点这里
Nginx 的下载地址请点这里

猜你喜欢

转载自www.linuxidc.com/Linux/2017-08/146435.htm