【发布时间】:2020-01-16 03:10:40
【问题描述】:
我已经为多个 URL 创建了代理通行证。
listen 80;
listen [::]:80;
server_name ~^(.*)redzilla\.11\.75\.65\.21\.xip\.io$;
location / {
set $instname $1;
proxy_pass http://${instname}redzilla.localhost:3000;
}
当我使用 chrome 调用此服务时,触发了 502 错误。
http://test.redzilla.11.75.65.21.xip.io/
我通过对 URL 进行硬编码,将其置于位置标签下方。
location /redzilla {
proxy_pass http://test.redzilla.localhost:3000;
}
那么它仅适用于上述 URL。我想知道如何为单个位置标记中的多个 URL 创建代理传递。 (请注意:URL 模式是 *.redzilla.localhost:3000 ,*(星号)代表任何单词)
【问题讨论】:
-
您需要定义一个
resolverstatement。 -
为什么在这种情况下(在正常情况下)需要解析器语句?
-
@Joe:如果我没记错的话,是因为这次nginx真的需要解析地址:不是传给浏览器去解析,而是nginx自己去获取内容。通常,在做代理时,你会直接使用 unix socket 或 ip。
-
我也被这个问题困住了。你有想过吗?
-
泊坞窗中的相同错误。不使用正则表达式匹配并静态指定它可以很好地工作。 snez 的解决方案(添加“解析器 127.0.0.11;”)工作正常。对我来说似乎是一些 nginx 实现细节。
标签: nginx localhost reverse-proxy nginx-reverse-proxy