【发布时间】:2020-09-14 03:49:23
【问题描述】:
我有一个 NGINX 服务器作为我托管的服务的反向代理运行。我试着用这个来配置它:
set $upstream_nzbget http://nzbget:6789;
location /nzbget/api/ {
proxy_pass $upstream_nzbget/;
}
但是当我尝试将斜杠 / 添加到 $upstream_nzbget 的末尾时,proxy_pass 无法正常工作。如果我将其更改为此,它可以正常工作:
location /nzbget/api/ {
proxy_pass http://nzbget:6789/;
}
所以我认为这与proxy_pass 中的变量有关。在第一种情况下(不工作的情况),我不太确定 URL 最终是什么。我还没有找到记录 proxy_pass 使用的最终 URI 的方法。
有人可以解释为什么第一个案例不起作用吗?什么是正确的解决方案?请注意,我需要将变量保留在 proxy_pass 中,以便它使用解析器。
旁注:我在我的位置块中使用尾部斜杠,否则当我使用此 URL 时会得到 404:
domain.com/nzbget/api/api:password/xmlrpc
这就是我使用/nzbget/api/ 而不是/nzbget/api 的原因。
编辑 1
我又玩了一些,发现这个也不起作用:
location /nzbget/api/ {
set $upstream_nzbget http://nzbget:6789/;
proxy_pass $upstream_nzbget;
}
这个真的很奇怪。它是同一个字符串,唯一的区别是使用变量与字符串文字。我在这里没有做任何字符串连接。我不确定为什么会有行为差异。
编辑 2
This SO question 可能是同一个问题,但它没有有用的答案。
【问题讨论】:
标签: nginx