break

'break' 指令停止对当前 location 的处理,并阻止对后续 rewrite 或 location 块的进一步处理。 — NGINX HTTP Core

break
serverlocationif in serverif in location
语法break;
默认值none
上下文server, location, if in server, if in location
模块NGINX HTTP Core
参数none

说明

'break' 指令用于 NGINX 配置中的 location 或 if 块内,以停止对所有后续 rewrite 规则或嵌套 location 块的评估。触发时,它会有效地改变 request 处理的流程,使管理员能够控制请求是否应继续沿额外规则或处理器的路径执行。该指令对于基于特定条件(例如 URI 状态或请求参数)实现条件逻辑非常有用。 当在处理 request 的过程中遇到 'break' 指令时,NGINX 服务器会停止评估在相同上下文中跟随它的任何后续 rewrite 指令。调用 'break' 后,NGINX 会继续处理当前的配置块,但可能跳过其他已定义的行为或处理器,这些行为或处理器可能会影响当前的 request。它以受控的方式作为处理的突然终止,从而在复杂的 NGINX 配置中实现简化和清晰。 需要注意的是,'break' 指令不返回任何值,也不接受任何参数。它严格是一条修改控制流的命令。在配置文件中正确使用它不需要任何直接的参数或表达式,使其实现简单明了。然而,它主要适用于存在多个嵌套指令的场景,例如复杂的 location 匹配情形。

配置示例

location /example {
    if ($arg_param = 'stop') {
        break;
    }
    # Further processing can go here
}

在嵌套的 if 块中使用 'break' 可能导致复杂的控制流,从而难以调试。

'break' 指令不会停止整个服务器配置处理,只会影响当前的请求周期。

将 'break' 放在意想不到的位置或上下文中,可能导致请求处理产生非预期的行为。