nginx proxy_next_upstream 与上游变量

nginx proxy_next_upstream 与上游变量

我发现能够根据 url 参数更改上游非常方便(主要用于测试):

upstream balance {
  server 111.111.111.111 weigth=5;
  server 222.222.222.222 weigth=6;
}

upstream server1 {
  server 111.111.111.111;
}

upstream server2 {
  server 222.222.222.222;
}

server {
  server_name myserver.servers.com;

  set $upstream balance;

  if ($arg_server = "server1") {
        set $upstream server1;
    }

    if ($arg_server = "server2") {
        set $upstream server2;
    }
  
  location / {
        proxy_pass http://$upstream/VirtualHostBase/https/$host:80/VirtualHostRoot$request_uri;
        proxy_next_upstream http_500 http_502;
    }
  listen: 80;
}

上游交换机可以工作,但是在这个配置中,指令proxy_next_upstream不起作用,因为$upstream变量存在proxy_pass(因为 nginx 只能在请求时确定上游服务器,而 proxy_next_upstream 是在服务器启动或重新加载时确定的,如果我的理解是正确的)。

有没有办法使用此 url 参数并仍使 proxy_next_upstream 正常工作?我知道我可以使用子域代替 url 参数,但这是我想避免的事情。

相关内容