limit_req_status
`limit_req_status` 指令指定当请求因速率限制而被拒绝时返回给客户端的 HTTP 状态码。 — NGINX HTTP Core
limit_req_status
httpserverlocation
语法limit_req_status code;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1
说明
`limit_req_status` 指令属于 NGINX HTTP Core 模块,并与 `limit_req` 指令提供的速率限制功能配合使用。当客户端超过允许的请求速率时,针对被限流机制拒绝的请求会返回指定的 HTTP 状态码。这样可以使用自定义的信息,例如 503 Service Unavailable,来通知客户端请求被限速,而不仅仅是简单地未能处理其请求。 该指令接受单个参数:当请求超出限制时应在响应中发送的目标 HTTP 状态码。用户可以指定任何有效的 HTTP 状态码,以便根据其应用的需求灵活选择。常用的状态码包括 503(服务不可用)或 429(请求过多)。需要注意的是,该指令仅影响因限流而未被处理的请求,而不影响那些在限制范围内成功处理的请求。 作为配置指令,它可以在 `http`、`server` 或 `location` 上下文级别定义,从而可以根据应用的不同范围灵活地应用不同的状态码。开发人员应确保所指定的状态码在启用速率限制时与其应用的错误处理逻辑和用户期望相符。
配置示例
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one;
limit_req_status 503;
}
}⚠
使用无效的状态码可能导致客户端应用出现意外行为或错误。
⚠
如果未正确配置 `limit_req`,客户端可能无法接收到设置的状态,因为在没有启用实际限流的情况下,该指令无效。