dynamic_limit_req_redis
为动态请求限制模块使用的 Redis 数据库配置连接参数。
NGINX module to dynamically lock IP and release it periodically
·
http
语法dynamic_limit_req_redis unix_socket | port=[number] requirepass=[password];
默认值port 6379
上下文http
参数1-3
说明
dynamic_limit_req_redis 指令是 ngx_dynamic_limit_req_module 的一部分,该模块根据请求速率动态锁定 IP 地址并定期释放。此指令允许您为 Redis(一种流行的内存数据结构存储)设置连接参数,该模块使用 Redis 来对过多请求的状态进行管理。
它最多接受三个参数:unix_socket、port=[number] 和 requirepass=[password]。unix_socket 提供了一种使用 Unix 套接字连接到 Redis 服务器的方法,port 参数指定用于与 Redis 建立 TCP 连接的端口号,默认为 6379。如果 Redis 配置为需要认证,则可以使用 requirepass 选项提供必要的密码。此灵活性适应各种部署场景,包括 Redis 在需要认证的环境中或需要不同连接方式的情况。
与 Redis 的连接在维护请求状态方面起着关键作用,通过在多个 NGINX worker 进程之间访问共享数据来实现有效的速率限制。未正确配置此指令可能导致无法与 Redis 通信等问题,从而阻碍预期的动态请求限制功能。
配置示例
dynamic_limit_req_redis unix_socket requirepass=comeback; dynamic_limit_req_zone $binary_remote_addr zone=sms:5m rate=5r/m redis=/tmp/redis.sock block_second=1800; dynamic_limit_req zone=sms burst=3 nodelay;
⚠
确保 Redis 服务器正在运行,且 NGINX 能够访问它。
⚠
如果使用 unix_socket 连接,请检查 Unix 套接字的权限。
⚠
Redis 的认证密码必须正确,以避免连接失败。