rate_limit_headers
rate_limit_headers 指令允许在 HTTP 响应中包含与速率限制相关的头部信息。
Redis backed rate limit module for Nginx
·
httpserverlocation
语法rate_limit_headers on | off;
默认值off
上下文http, server, location
参数flag
说明
当设置为 'on' 时,rate_limit_headers 指令允许 NGINX 在响应客户端时发送特定的与速率限制相关的 HTTP 头。这些头部向客户端告知当前生效的速率限制参数,包括允许的最大请求数、当前时间段内剩余的请求数、速率限制何时重置的时间以及在达到限制时建议的再发起请求前的等待时间。'X-RateLimit-Limit'、'X-RateLimit-Remaining'、'X-RateLimit-Reset' 和 'Retry-After' 这些头部为服务器处理的每个请求提供关于速率限制状态的透明信息。
在 API 场景中使用此指令特别有用,因为客户端需要关于其使用情况和服务施加的限制的明确反馈。当客户端达到其速率限制时,服务器可以返回 429 Too Many Requests 状态码以及相应的头部,从而使客户端能够相应地调整其请求策略。该指令灵活可用,可在 http、server 或 location 上下文中配置,便于根据应用的速率限制需求对何时包含这些头部进行精细控制。
配置示例
location /quota {
rate_limit $limit_key requests=15 period=1m burst=20;
rate_limit_quantity 0;
rate_limit_pass redis;
rate_limit_headers on;
}⚠
确保 rate limiting 逻辑被正确配置,以避免在用户超过其限制后发送误导性的 headers。
⚠
headers 的存在可能会鼓励客户端滥用 rate limiting 限制,通过以略低于阈值的请求频繁轰击服务器。