rate_limit_quantity

使用 Redis 支持的速率限制模块,设置在触发限流之前允许的请求数量。

语法rate_limit_quantity number;
默认值none
上下文http, server, location
参数1

说明

rate_limit_quantity 指令指定了在 NGINX 配置中用于标识特定键时应限制请求的阈值。该指令在设计 API 或 Web 应用时尤其有用,当需要在定义的时间范围内限制某些客户端不得发送过多请求时可用。当来自某个客户端的请求数超过指定的 rate_limit_quantity 时,后续请求将收到限流响应,通常为配置的状态码(例如 429 Too Many Requests)。

在基于 Redis 的速率限制模块中,该指令使用 Redis 作为后端存储,以维护客户端请求的状态和历史。请求数在由 rate_limit 指令的 period 参数定义的指定期间内进行统计。超过设定的请求数量后,服务器的响应可能由模块与 Redis 数据库的交互方式控制,以返回相应的错误代码或响应。此外,它可以与由 burst 参数定义的突发值结合使用,以在允许短时间内流量突增的情况下,在达到严格限制之前容纳一定的突发量。

<location><server> 块中可以灵活地基于特定端点或服务器配置应用不同的速率限制。该指令提供了一种细粒度的方法来有效管理负载,同时确保客户端请求在所需限制内公平地被处理,从而增强 NGINX 在处理多个客户端时的整体稳定性和性能。

配置示例

location = /quota {
    rate_limit $limit_key requests=15 period=1m burst=20;
    rate_limit_quantity 0;
    rate_limit_pass redis;
    rate_limit_headers on;
}

确保 Redis 已正确配置并可访问,因为连接失败可能导致意外的请求被拒绝。

rate_limit_quantity 设置为 0 会禁用速率限制,在配置修订中可能会被无意跳过。

请确保已正确指定 rate_limit 指令,因为它为 rate_limit_quantity 建立上下文;否则,该指令可能看起来没有任何效果。

← 返回所有指令