dynamic_limit_req_status
dynamic_limit_req_status 指令设置当客户端的请求超过定义的限制时返回的 HTTP 状态码。
NGINX module to dynamically lock IP and release it periodically
·
httpserverlocationif in location
语法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_zone 和 dynamic_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 这样的状态码可能会导致混淆,因为它表示成功,尽管可能已超出限制。
⚠
如果未正确配置,将多个用于限制请求的指令组合可能会导致意外行为。