Dynamix Nginx proxy-pass 带有来自位置路径的变量

Dynamix Nginx proxy-pass with a variable from the location path

我想要实现的是对给定 URL 使用代理通行证,代理通行证域名取决于位置 URL。 像这样:

location ~ ^/([0-9]+)/api/ {
      proxy_pass http://server-:8080;
  }

逻辑上 URL 例如:/4/api/auth/login 使用代理 http://server-4: 8080/api/auth/login

我周末都在处理这个问题。但我能够解决它。 首先,每当您想使用变量来构造 proxy_pass 域时,您都需要使用解析器。可以在这篇文章中找到更多详细信息:https://dev.to/danielkun/nginx-everything-about-proxypass-2ona

这就是我解决问题的方法:

location ~ ^/([0-9]+)(/api/.*) {
    
    resolver 127.0.0.11 ipv6=off;
    proxy_pass http://server-:8080;

  }

如果我们有这样的请求:https://example.com/1/api/auth/login
pass_proxy 会将请求转发到:http://server-1:8080/api/auth/login