rate_limit_pass
`rate_limit_pass` 指令指定在 NGINX 中用于检查并强制执行速率限制的上游服务器。
Redis backed rate limit module for Nginx
·
httpserverlocation
语法rate_limit_pass
默认值none
上下文http, server, location
参数1
说明
rate_limit_pass 指令在 NGINX 中属于基于 Redis 的限速模块,可增强服务器根据定义的条件控制请求速率的能力。该指令告知 NGINX 将速率限制的决策过程传递给指定的上游 Redis 服务器。通过为此指令提供参数,服务器可以将限速数据与 Redis 同步,从而在多个服务器实例或容器之间共享请求速率控制,这对高流量环境非常有利。
在与 geo 和 map 指令结合使用时,rate_limit_pass 利用远程地址信息或请求上下文中定义的自定义变量来确定应应用的速率限制。速率限制配置,包括请求阈值和突发容量,在同一 location 块内指定,这提高了灵活性。此外,如果超过速率,则返回预定义的 HTTP 状态,该状态通过 rate_limit_status 指令配置。
需要注意的是,必须在 NGINX 配置中正确设置这些指令,以防止在与 Redis 交互时出现意外问题。该指令可以在 http、server 或 location 块的上下文中使用,确保其在各种路由场景中无缝集成。
配置示例
upstream redis {
server 127.0.0.1:6379;
keepalive 1024;
}
location = /limit {
rate_limit $limit_key requests=15 period=1m burst=20;
rate_limit_pass redis;
}⚠
确保上游 Redis 服务器已正确配置并且可以被 NGINX 访问。
⚠
在限流逻辑中使用不正确的 keys 或 values 可能会导致意外的限流行为。
⚠
注意所使用 keys 的最大长度;超过 65535 bytes 会导致错误。