【问题标题】:A little confused about trailing slash behavior in nginx对 nginx 中的斜杠行为有点困惑
【发布时间】:2019-05-08 01:27:01
【问题描述】:

最近,nginx 中的 Trailing Slash 让我有些不眠之夜。请求一些帮助

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

那么为什么会这样:

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

这不会

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

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

【问题讨论】:

    标签: nginx


    【解决方案1】:

    它们完全不同。

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

    当您给proxy_pass 一个URI 参数(在前缀location 内)时,它会转换请求的URI,类似于alias 函数,其中location 指令的值被替换为URI 参数。例如/myapi/foo 在被上游传递之前变为/foo

    如果您没有为proxy_pass 提供URI 参数,则不会进行任何转换,并且请求/myapi/foo 会原封不动地向上游传递。

    详情请见this document

    【讨论】:

    • 谢谢理查德。但是,对于我的其他一些后端 nginx 配置,如果没有尾随 /,它如何工作得很好……我可能在这里遗漏了一些东西。
    • 配置不同,想必其他后端的需求也不同。
    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 2019-04-09
    • 2012-05-15
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2020-08-03
    相关资源
    最近更新 更多