我如何仅在url的小节上允许使用nginx正则表达式?

问题描述 投票:0回答:1

我有几个网址,id是一个变量。

/purchases/id以下的所有内容都需要proxy_pass,URL此部分之后的所有内容都不需要proxy_pass,而是继续正常进行。下面是它应该如何工作的:

/purchases                  - allow proxy_pass
/purchases/id               - allow proxy_pass
/purchases/id/terms         - continue as normal
/purchases/id/terms/accept  - continue as normal
/purchases/id/terms/cancel  - continue as normal
/purchases/id/terms/return  - continue as normal

这里是nginx配置。当前,所有URL都传递给proxy_pass。

    location ~ ^/purchases {
      proxy_pass     https://myurl.com;
    }
    location ~ ^/purchases/(\d+)$ {
      proxy_pass     https://myurl.com;
    }

是否有明显的遗漏之处?任何帮助,将不胜感激。谢谢。

regex nginx nginx-config proxypass
1个回答
0
投票

向其他有此问题的人。问题不在于正则表达式或规则。这是规则的顺序。

第一个规则是捕获所有内容,然后nginx不需要应用第二个规则。

下面解决了这个问题:

    location ~ ^/purchases/(\d+)$ {
      proxy_pass     https://myurl.com;
    }
    location ~ ^/purchases {
      proxy_pass     https://myurl.com;
    }
© www.soinside.com 2019 - 2024. All rights reserved.