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状态码。
因为两个版本的接口不一样,所以返回的状态码不一样