这个问题是重写 break 与 last。据我所知,break 语句将停止处理当前的一组重写语句,而不是触发新的位置搜索,它将继续处理当前位置块中的其余语句。如果是这种情况,那么重写指令中给出的替换 url 的用途是什么。
答案1
如果找到匹配的重写规则,则使用指定的规则编写新的 URI。
使用break
关键字 nginx 在位置块重写内使用新的 URI。
因此,如果当前没有其他内容,location
nginx 将尝试使用新 URI 提供文件。如果您有proxy_pass
或类似内容,则它将使用新 URI 转发请求。
如果last
指定了关键字,那么在创建新的 URI 后,nginx 会“重新启动”请求处理过程并触发对location
新 URI 的块的新搜索。
last
并且break
在 nginx 文档中有详细记录:
最后的停止处理当前的 ngx_http_rewrite_module 指令集并开始搜索与改变的 URI 匹配的新位置;
休息停止处理当前的 ngx_http_rewrite_module 指令集,就像 break 指令一样;
last
如果重写规则出现在服务器块中,那么和之间似乎没有区别break
。