【发布时间】:2021-04-03 19:29:13
【问题描述】:
我想要实现的是对给定的 URL 使用代理通行证,并且代理通行证域名取决于位置 URL。 像这样的:
location ~ ^/([0-9]+)/api/ {
proxy_pass http://server-$1:8080;
}
逻辑上是一个 URL,例如:/4/api/auth/login 使用代理 http://server-4:8080/api/auth/login
【问题讨论】:
我想要实现的是对给定的 URL 使用代理通行证,并且代理通行证域名取决于位置 URL。 像这样的:
location ~ ^/([0-9]+)/api/ {
proxy_pass http://server-$1: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-$1:8080$2;
}
如果我们有类似的请求:https://example.com/1/api/auth/login
pass_proxy 会将请求转发到:http://server-1:8080/api/auth/login
【讨论】: