我想知道我的配置是否可以接受,因为我使用了邪恶的“if”。
我读过这个-https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/
map $http_app_code $app_code {
default "server-api-1";
~app1 "server-api-1";
~app2 "server-api-10";
~app3 "server-api-21";
}
location /getSite {
if ($app_code = "server-api-1") {
proxy_pass http://$app_code.dev.internal.com/api/v1/getSite;
}
if ($app_code = "server-api-10") {
proxy_pass http://$app_code.dev.internal.com/api/v1/getSite;
}
if ($app_code = "server-api-21") {
proxy_pass http://$app_code.dev.internal.com/api/v3/getSite;
}
}
答案1
使用第二个map
map $http_app_code $app_code {
default "server-api-1";
~app1 "server-api-1";
~app2 "server-api-10";
~app3 "server-api-21";
}
map $app_code $app_version {
server-api-1 v1;
server-api-10 v1;
server-api-21 v3;
}
location /getSite {
proxy_pass http://$app_code.dev.internal.com/api/$app_version/getSite;
}