Nginx位置,正则表达式位于路径中间

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

我正在尝试将Nginx配置为正确解析其中包含正则表达式的两个相似路径。

我有2个服务:

  • / api / v1 / myservice / {var} / client
  • / api / v1 / myservice / {var} / client / detail

{var}是我正在读取的有效变量

这里是我的代码(此处未使用var):

location ~ /api/v1/myservice/(.*)/client {
     return 200 "service 1 ";
}

location ~ /api/v1/myservice/(.*)/client/detail {
     return 200 "service 2";
}

当我像下面那样卷曲时:

curl http://localhost/api/v1/myservice/623723852/client/detail

我从第一个位置看到了答复:“服务1”

我在做什么错?谢谢

regex nginx nginx-location
1个回答
0
投票

您的位置阻止方式的问题是,当您向/api/v1/myservice/{var}/client/detail请求时,它会给您第一个阻止,因为它已经有了它的定义,即/api/v1/myservice/{var}/client,因为它们是由[C0处理]它将使用第一个块,因为它先出现

您要做的就是嵌套它们。就您而言,它会像这样

location priority

您可以在有关嵌套Nginx位置的问题上查看location ~ /api/v1/myservice/(.*)/client { location ~ /api/v1/myservice/(.*)/client/detail { return 200 "service 2"; } return 200 "service 1"; } 答案

© www.soinside.com 2019 - 2024. All rights reserved.