关于Nginx中的尾部斜杠行为有些困惑

时间:2018-12-06 10:58:11

标签: nginx

追踪Nginx中的Slash最近给了我一些不眠之夜。在此方面寻求帮助

问题proxy_pass中出现奇怪的斜杠行为。

那为什么会起作用:

location /myapi/ {
      proxy_pass   http://node_server8/;
    }

这不会

location /myapi/ {
      proxy_pass   http://node_server8;
    }

请注意第二个代码块中http://node_server8末尾缺少的斜杠。这特别奇怪,因为我有一些其他配置,其中后端没有斜杠,并且一切正常。

1 个答案:

答案 0 :(得分:1)

它们完全不同。

在第一条proxy_pass语句中,您包含了一个值为/的URI参数。在第二次您还没有。

当您为proxy_pass提供URI参数(在前缀location内)时,它类似于alias函数来转换所请求的URI,由此location的值指令替换URI参数的值。例如,/myapi/foo在通过上游之前变成/foo

如果不为proxy_pass提供URI参数,则不会进行任何转换,并且请求/myapi/foo会原样传递给上游。

有关详细信息,请参见this document