我正在尝试将Nginx配置为正确解析其中包含正则表达式的两个相似路径。
我有2个服务:
{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”
我在做什么错?谢谢
您的位置阻止方式的问题是,当您向/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";
}
答案