NGINX 负载均衡根据上游服务器调整 proxy_pass URL

NGINX 负载均衡根据上游服务器调整 proxy_pass URL

我已经完成了基本的 nginx 负载平衡设置,例如

http {
  ... ## some stuff, log formats, etc.
  upstream backend {
    server localhost:8001
    server localhost:8002
  }
  server {
    listen 80 default_server;
    server_name foo.com;
    location / {
      proxy_pass http://backend/foo/bar/;
    }
  }
}

但我想用proxy_pass特定于所选上游服务器的值/变量来参数化 URL。例如,如果选择了端口为 8001 的服务器,我想使用proxy_pass http://backend/foo/bar/8001,同样,如果选择了端口为 8002 的服务器,我想使用proxy_pass http://backend/foo/bar/8002(其中backend显然被所选服务器名称替换,按照 nginx 的常规负载平衡设置)。

有人知道这是否可能吗?

(我知道我可以在 nginx 中做一些自我路由来实现这一点……例如设置两个新的 nginx 地址作为上游,然后proxy_pass分别设置每个地址,但我想知道是否有办法动态重写传递给上游服务器的 URL负载平衡系统已选择下一个要尝试的上游服务器。)

相关内容