You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nginx location块中限制/api/v1后的路径段数量至3个?

Nginx Location 配置方案(限制路径段数量+保留GET参数)

核心配置代码

location ~* ^/api/v1/(?<endpoint>[^/]+(/[^/]+){0,2})(\?.*)?$ {
    # 替换为你的FastAPI后端实际地址
    proxy_pass http://your-fastapi-backend:8000/$endpoint$is_args$args;
    
    # 可选:添加通用代理头部配置(按需启用)
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

配置细节说明

  1. 正则规则解析

    • ^/api/v1/:锚定路径开头的固定前缀,避免部分匹配
    • (?<endpoint>[^/]+(/[^/]+){0,2}):精准捕获/api/v1/后的路径部分,强制限制最多3个路径段:
      • [^/]+:匹配第一个非斜杠的路径单元(如foo)
      • (/[^/]+){0,2}:允许追加0-2个额外路径单元(对应/bar或/bar/baz的情况)
    • (\?.*)?$:匹配可选的GET参数,同时用$锚定结尾,杜绝超过3段的路径匹配
  2. Proxy传递逻辑

    • $endpoint:直接引用正则捕获的路径部分,自动完成/api/v1/foo/bar到/foo/bar的映射
    • $is_args:自动识别是否存在GET参数,有参数则输出?,无参数则为空
    • $args:完整保留所有原始GET参数,无需手动拼接处理

匹配验证

  • ✅ 允许通过的路径:
    • /api/v1/foo
    • /api/v1/foo/bar
    • /api/v1/foo/bar/baz
    • /api/v1/foo/bar/baz?x=hello&y=world
  • ❌ 拒绝匹配的路径:
    • /api/v1/foo/bar/baz/aaa(路径段超过3个)
    • /api/v1/foo/bar/baz/aaa/n(路径段超过3个)

内容的提问来源于stack exchange,提问作者enchance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:32:40