如果满足条件,则更改 proxy_pass?

如果满足条件,则更改 proxy_pass?

我希望大多数时候都使用上游,但其他时候我希望允许基于 X-Target-Server 请求标头指定目标服务器。

我有一台服务器,它查找请求变量并将其映射为 nginx.conf 的一部分。然后我有一个虚拟服务器 conf,它执行以下操作:

proxy_pass https://backend_dev_test;
if ($is_target_specified) {
  proxy_pass https://$http_x_target_server;
}

当指定 proxy_pass 指令时会发生什么?它会立即运行吗?这会导致它运行两次吗?或者它只会在条件满足时针对第二次?

它似乎在某些位置块中有效,但在其他位置块中无效,我不明白为什么。有没有更好的方法来解决这个问题?完整位置如下

似乎有效

location ~* /v3/(test|other)/ {
  proxy_cache_bypass "1";
  proxy_no_cache "1";
  resolver 8.8.8.8;
  proxy_ignore_client_abort on;
  rewrite ^/v3/(.*)$ /$1 break;
  proxy_pass https://backend_dev_test;
  if ($is_target_specified) {
    proxy_pass https://$http_x_target_server;
  }
}

似乎不起作用

location ~* /v3 {
  proxy_cache_bypass "1";
  proxy_no_cache "1";
  resolver 8.8.8.8;
  proxy_ignore_client_abort on;
  proxy_pass https://backend_dev;
  if ($is_target_specified) {
    proxy_pass https://$http_x_target_server;
  }
}

相关内容