nginx - 在位置块内进行选择性重写

nginx - 在位置块内进行选择性重写

假设位置块需要处理如下 URL

  • /test_api/group_1/version(多个 URL 属于此组。例如,/test_api/aaa/version、/test_api/bbb/version)
  • /test_api/group_2/revision(其他几个 URL 属于此组。例如,/test_api/yyy/revision、/test_api/zzz/revision)

我如何选择性地重写“/test_api/group_1/version”,同时将“/test_api/group_2/revision”传递给位置块内的默认服务器?如果这不可能,还有其他方法可以实现相同的目标。以下是我当前的非歧视性位置块。

location /test_api {
    types    { application/json json; }
    root     /usr/local/www/data;
    rewrite  "/test_api/([^/]+)/version(.*)/?$"   /api_response/test_api_$1.json   break;
}

答案1

当你创建两个位置时

location /test_api/group_1/version {
  ...
}

location /test_api {
  ...
}

最长的那个将始终匹配,因此你的 group_2 将不会匹配第一条规则

相关内容