nginx rewrite 的 break 和 last 区别
你的理解有一定道理,但关键在于 rewrite 指令的 break 标志。
在 Nginx 中,rewrite 的 break 标志会停止当前 location 内的重写处理,但不会重新进行 location 匹配。所以即使 URI 被改成了 /xxx(去掉了 /api/ 前缀),请求仍然停留在当前 location /api/ 块内,继续执行后面的 proxy_pass 等指令,最终将修改后的 URI 代理到后端。
如果误用了 last 标志,则会在重写完成后重新匹配 location,此时 URI 变成 /xxx,就可能匹配到 location / 块,导致代理失效。但这里用的是 break,所以安全。
总结:
rewrite ... break;→ 在当前location内继续处理,不会重新匹配location。rewrite ... last;→ 重写后重新匹配location,可能跳转到其他location。
因此,你提供的配置中,/api/xxx 的请求会始终走代理,不会落到 location / 里。
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1446.html
转载时须注明出处及本声明