追踪Nginx中的Slash最近给了我一些不眠之夜。在此方面寻求帮助
问题:在proxy_pass
中出现奇怪的斜杠行为。
那为什么会起作用:
location /myapi/ {
proxy_pass http://node_server8/;
}
这不会
location /myapi/ {
proxy_pass http://node_server8;
}
请注意第二个代码块中http://node_server8
末尾缺少的斜杠。这特别奇怪,因为我有一些其他配置,其中后端没有斜杠,并且一切正常。
答案 0 :(得分:1)
它们完全不同。
在第一条proxy_pass
语句中,您包含了一个值为/
的URI参数。在第二次您还没有。
当您为proxy_pass
提供URI参数(在前缀location
内)时,它类似于alias
函数来转换所请求的URI,由此location
的值指令替换URI参数的值。例如,/myapi/foo
在通过上游之前变成/foo
。
如果不为proxy_pass
提供URI参数,则不会进行任何转换,并且请求/myapi/foo
会原样传递给上游。
有关详细信息,请参见this document。