我想在大多数情况下使用上游,而其他人则希望允许基于X-Target-Server请求标头指定目标服务器。
我有一个服务器,查找请求variables,并将其映射为我的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; } }