Nginx 的 location 匹配规则到底怎么生效的? 柯豪 Dev 提问于 2026-03-21 08:55:17 阅读 21 工具 我配置了两个 location,一个 /api,一个 /api/v1,但请求 /api/v1/user 时总是被第一个匹配到,后面的规则好像没生效? 我的配置大概是这样的: location /api { proxy_pass http://backend; } location /api/v1 { proxy_pass http://new_backend; } 我来解答 赞 7 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 Mc.鉴恒 Lv1 Nginx 的 location 匹配是有顺序的,默认情况下,它会按照这个顺序来匹配:首先是精确匹配,然后是前缀匹配,接着是正则表达式匹配。在你的情况里,Nginx 先匹配到了 /api 这个前缀,所以后面的 /api/v1 没有生效。 解决这个问题,你需要调整一下 location 的顺序,或者明确指定匹配类型。你可以把更具体的路径放在前面,这样 Nginx 就能先匹配到它。修改后的配置可以这样: location /api/v1 { proxy_pass http://new_backend; } location /api { proxy_pass http://backend; } 这样 Nginx 会先尝试匹配 /api/v1,如果匹配上了就不会再去匹配 /api 了。前端这块有时候处理路由和代理的时候确实挺容易踩坑的,希望这能帮到你。 回复 点赞 2026-03-21 09:00 加载更多 相关推荐 2 回答 50 浏览 Nginx配置location匹配规则总是不生效怎么办? 我最近在用 Nginx 部署一个前端项目,想把所有 /api 开头的请求代理到后端服务,但不管怎么改 location 规则都没用,请求还是被当成了静态资源处理。我试过 =、~、^~ 这些前缀,也重启... ♫凌昊 工具 2026-03-19 04:20:19 1 回答 27 浏览 Nginx 的 keepalive 配置到底该怎么写才生效? 我在用 Nginx 做反向代理,后端是 Node.js 服务。最近发现连接复用好像没生效,每次请求都新建 TCP 连接,延迟很高。我查了文档,在 upstream 里加了 keepalive 32;,... 迷人的心虹 工具 2026-03-14 10:10:22 2 回答 26 浏览 Nginx重写规则不生效,路径总是404怎么办? 我用Nginx部署了一个前端项目,想把所有非静态资源的请求都重写到index.html,但配置了rewrite后刷新页面还是404。 我试过在location里加rewrite ^(.*)$ /ind... 东方尚斌 工具 2026-03-07 20:41:17 2 回答 89 浏览 Nginx重写规则不生效,总是返回404怎么办? 我用Nginx部署了一个前端项目,想把所有非静态资源的请求都重写到index.html,但配置了rewrite后刷新页面还是404。 我试过在location里加rewrite ^(.*)$ /ind... 码农怡平 工具 2026-02-23 21:50:19 1 回答 65 浏览 Nginx负载均衡后端服务怎么配置权重才生效? 我用Nginx做负载均衡,配了两台后端服务器,想让第一台处理70%的请求,第二台30%,但改了weight好像没效果,流量还是平均分的? 我的配置是这样的: upstream backend { se... 巧云 Dev 工具 2026-03-18 08:52:24 2 回答 38 浏览 Early Hints 怎么在 Nginx 上配置才生效? 我看到 Early Hints 能提前推送资源链接,加快页面加载,就在本地 Nginx 试了下,但浏览器 Network 面板里完全没看到 103 Early Hints 响应。 我加了 http2_... Air-建梗 优化 2026-03-16 18:56:20 1 回答 24 浏览 Nginx重写规则导致React路由404,怎么解决? 我在用React做前端,部署到Nginx后,直接访问二级路由比如 /dashboard 就报404,刷新页面就挂了。本地开发没问题,但上线后只有首页能打开。 我试过在Nginx里加 rewrite ^... Tr° 爱豪 工具 2026-03-04 05:00:22 2 回答 75 浏览 Nginx配置了缓存但静态文件没生效怎么办? 折腾了一下午配置Nginx缓存,但发现CSS和JS文件还是没被缓存到。明明按教程设置了proxy_cache,访问的时候检查响应头连Cache-Control都没看到,是不是哪里漏了? 我的Nginx... 一俊郝 工具 2026-02-12 07:48:52 1 回答 42 浏览 Nginx配置CORS后还是报跨域错误怎么办? 我在本地开发时用 Vue 调用公司测试服务器的 API,一直被 CORS 拦截。明明已经在 Nginx 里加了跨域头,但浏览器控制台还是报错:「has been blocked by CORS pol... Mr-美美 工具 2026-03-31 07:01:15 1 回答 19 浏览 Nginx限流配置后为啥没生效? 我用 Nginx 做接口限流,按官方文档配了 limit_req_zone 和 limit_req,但压测时发现请求根本没被限制,还是全部通过了。 我的配置是这样的: http { limit_req... UP主~宁馨 工具 2026-03-30 21:11:14
解决这个问题,你需要调整一下 location 的顺序,或者明确指定匹配类型。你可以把更具体的路径放在前面,这样 Nginx 就能先匹配到它。修改后的配置可以这样:
这样 Nginx 会先尝试匹配 /api/v1,如果匹配上了就不会再去匹配 /api 了。前端这块有时候处理路由和代理的时候确实挺容易踩坑的,希望这能帮到你。