我希望大多数时候都使用上游,但其他时候我希望允许基于 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;
}
}