cookie_limit_req_zone

指令 `cookie_limit_req_zone` 定义了一个共享内存区,用于根据 cookie 值跟踪并限制访问速率。

语法cookie_limit_req_zone key zone=name:size rate=rate [sync] redis=127.0.0.1 block_second=time cookie_max=number;
默认值none
上下文http
参数6

说明

cookie_limit_req_zone 指令是 ngx_cookie_limit_req_module 的关键部分,允许管理员根据客户端的 cookie 管理请求速率。它建立了一个共享内存区,在其中存储各种键的限制和状态,具体使用 cookie 值作为标识。该机制使服务器能够跟踪来自单个 cookie 的过多请求并应对恶意客户端的潜在滥用。

该指令的语法包含一个 key 参数,指明用于限制的值(在本例中为 cookie 值),以及一个 zone 参数用于指定共享内存的名称和大小。此外,它接受以每秒请求数表示的速率限制,以及用于 Redis 存储的可选参数、超出限制时的阻塞时长和被视为合法的最大 cookie 数量。例如,该指令允许你指定:若从单个 cookie 检测到超过某个数量的过多请求,则后续请求将被延迟或拒绝,从而防止由恶意 IP 伪造的 cookie 导致的滥用。

配置示例

http {
    cookie_limit_req_zone $http_cookie zone=one:10m rate=10r/s redis=127.0.0.1 block_second=60 cookie_max=3;
}

确保指定的 Redis 服务器可访问且已为 redis 参数正确配置。

不正确的 key 配置可能导致请求未被正确跟踪;请核实该 key 是否准确反映了正在使用的 cookie 值。

注意共享内存区的大小;如果太小,会导致大量驱逐,从而造成限流或请求被丢弃。

← 返回所有指令