$limit_req_status

变量 $limit_req_status 输出 NGINX 中请求限制机制的状态码。 — NGINX Core (HTTP)

$limit_req_status NGINX Core (HTTP)

说明

$limit_req_status 变量在 NGINX 配置中用于指示由 'limit_req' 模块定义的速率限制指令产生的响应状态。当请求超过设定速率时,NGINX 可以返回特定的状态码,例如 503(Service Unavailable),或者返回带有 'limit exceeded' 消息的 503。$limit_req_status 变量会捕获这些状态码,并可用于记录日志或进一步处理。 该变量在创建自定义错误页面或基于状态对特定响应进行差异化处理时特别有用。例如,如果请求因为在短时间内请求过多而被限制,你可以在配置中使用 $limit_req_status 的值来决定如何通知用户已达到限额。通常,它可以返回诸如 200(正常请求)、503(因速率限制而被拒绝的请求)或应用配置的其他状态码。 需要注意的是,$limit_req_status 变量仅在有效请求经过 limit_req 指令并且受到速率限制行为影响时才会被填充。如果速率限制未生效,或请求未命中该指令,则该变量将不会被设置。

配置示例

server {
    location /api {
        limit_req zone=one burst=5;
        if ($limit_req_status = 503) {
            return 429 'Too Many Requests';
        }
    }
}

子系统

http

可缓存

上下文

http, server, location

确保 limit_req 指令已正确配置;否则 $limit_req_status 可能不会按预期设置。

最好将此变量与日志记录或自定义错误处理结合使用,以获得有意义的见解。

该变量仅反映在速率限制规则下处理的请求的状态,因此请确保已正确应用速率限制。