使用 map 和邪恶的“if”

使用 map 和邪恶的“if”

我想知道我的配置是否可以接受,因为我使用了邪恶的“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;
}

相关内容