dynamic_limit_req_status

dynamic_limit_req_status 指令设置当客户端的请求超过定义的限制时返回的 HTTP 状态码。

语法dynamic_limit_req_status code;
默认值none
上下文http, server, location, if in location
参数1

说明

dynamic_limit_req_status 指令是 NGINX Dynamic Limit Request 模块的一部分,该模块用于在请求超出阈值时动态锁定 IP 地址。当某个键(例如 IP address)的特定限制被超过时,该指令允许配置一个自定义的 HTTP 状态码,NGINX 会将其返回给客户端。此功能对于在客户端被限流时管理反馈非常重要,可以确保客户端明白他们的请求因超出限制而未被处理。

此指令可在 HTTP、server 或 location 块的上下文中设置,也可在 location 内的条件块中使用。该指令的参数必须是有效的 HTTP 状态码(通常在 400-599 范围内),允许管理员自定义如何处理此类情况。该灵活性使您能够定义更顺畅的用户体验,可能向客户端提供与您的应用逻辑相关的特定错误消息。如果没有适当的状态码,客户端可能无法理解其请求为何被拒绝或延迟,这可能导致沮丧和困惑。

必须将该指令与其他指令参数(例如 dynamic_limit_req_zonedynamic_limit_req)一起正确配置,因为它们共同决定了请求处理和日志记录的规则。如果配置不当,当客户端超过请求限制时可能导致非最佳的行为或用户体验。

配置示例

http {
    dynamic_limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    dynamic_limit_req_status 429;
}

server {
    location / {
        dynamic_limit_req zone=one burst=5 nodelay;
    }
}

确保状态码位于有效的 HTTP 范围(400-599)内,以避免意外错误。

请注意,使用像 200 这样的状态码可能会导致混淆,因为它表示成功,尽管可能已超出限制。

如果未正确配置,将多个用于限制请求的指令组合可能会导致意外行为。

← 返回所有指令