【问题标题】:Nginx location rules conflict with controllerNginx 定位规则与控制器冲突
【发布时间】:2016-10-17 21:57:49
【问题描述】:

所以我有一个像这样设置的 nginx 规则位置:

    location  /foo {
            proxy_pass              http://<a-service-discovery-url>/foo/;
            proxy_redirect          default;
            proxy_set_header        X-Real-IP               $remote_addr;
            proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
}

然后我有一个控制器网址,例如:

/foo-bar/bizz

奇怪的是,当我点击 /foo-bar/bizz 中的控制器时,我再次被重定向到 /foo,这是不希望的。

我尝试了许多规则组合,但都导致了不良行为:

location /foo/

location = /foo

location = /foo/

此外,任何用 ~ 定义的正则表达式都不起作用,因为 proxy_pass 包含位置规则中的世界 foo。

不希望有尾部斜杠,因为这样用户将不得不显式编写它。

任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 你能解释一下,你点击了哪些网址,还有哪些其他位置块,你期望什么,以及不良行为是什么?

标签: nginx location rules


【解决方案1】:

当您将它添加到位置时,您是否尝试过从 proxy_pass url 中删除尾部斜杠。

location  /foo/ {
        proxy_pass              http://<a-service-discovery-url>/foo;
        proxy_redirect          default;
        proxy_set_header        X-Real-IP               $remote_addr;
        proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
}

【讨论】:

  • 当我点击 /foo (没有尾部斜杠)时,这样做会导致重定向到端口 8001(nginx 正在侦听)。 :S
  • 你的服务器块中有哪些指令?默认行为应该执行从 /foo 到 /foo/ 的 301 重定向
猜你喜欢
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多