limit_req_zone

'limit_req_zone' 指令用于设置一个共享内存区,以根据定义的键限制请求速率。 — NGINX HTTP Core

limit_req_zone
http
语法limit_req_zone key zone=name:size;
默认值none
上下文http
模块NGINX HTTP Core
参数3

说明

'limit_req_zone' 指令在 NGINX 配置的 http 上下文中使用,用于定义与请求速率限制机制关联的共享内存区。它接受三个参数:一个用于定义请求将被跟踪的上下文的 key(例如客户端 IP 地址或某个变量)、存放请求计数器的区域名以及该共享内存区的最大大小。\n\n正确配置后,NGINX 会基于所定义的 key 对进入的请求进行分组并随时间统计这些请求。例如,如果 key 是客户端的 IP 地址,NGINX 会跟踪每个 IP 发出的请求数量。这允许管理员防止滥用并限制对特定资源的过度使用。请求限制功能通过两个主要选项,burst 和 nodelay 来实现,可与 'limit_req' 指令一起指定以控制如何处理超额请求。\n\n所选参数必须反映部署需求,因为不同的应用可能需要更高或更低的速率限制,并可能受到用户同时请求突发的影响。因此,正确调整这些参数对于避免无意中限制合法用户同时有效缓解滥用至关重要。

配置示例

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

在定义区域时,确保正确指定键,以避免意外的限制行为。

避免使用过于严格的速率限制,这可能会阻止合法流量,尤其是在高流量环境中。

确保区域名称在配置中唯一,以防发生冲突。