【问题标题】:Can't get nginx to match part of the path无法让 nginx 匹配部分路径
【发布时间】:2020-06-12 16:15:02
【问题描述】:

我让 nginx 在 docker-compose 设置中运行,我想实现以下目标:

每个包含 /something/ 的 url 都会传递给应用程序 1
每个包含 /something/alsothis/ 的 url 都会传递给应用程序 2

我当前的配置有:

location ~* ^/something/(?<path>.+) {
            proxy_pass http://app1/$path;
        }

location ~* ^/something/alsothis/(?<path>.+) {
            proxy_pass http://app2/$path;
        }

当我尝试https://www.example.com/something/rest_of_path 时,它工作正常。

但是,当我尝试 https://www.example.com/something/alsothis/rest_of_path 时,我在 Postman 中收到 Unkown 错误(在 nginx 中记录了 500 错误)。

我还仔细检查了 app2 是否正常工作。当我将第一个位置更改为 app2 时,它也可以正常工作。

似乎无法弄清楚出了什么问题,非常感谢所有帮助。

提前致谢!

【问题讨论】:

  • 正则表达式按顺序求值,直到找到匹配项。因此,您需要反转这两个 location 语句,因为第一个也匹配任何用于第二个的 URI。

标签: nginx nginx-reverse-proxy nginx-location


【解决方案1】:

Richard 是对的,只是不得不改变顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多