Nginx 如何实施超长利率限制?
对于我的大多数网站,我的正常速率限制为每秒1个请求:Nginx 如何实施超长利率限制?,nginx,Nginx,对于我的大多数网站,我的正常速率限制为每秒1个请求: limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 我现在需要一个特定的位置每天10的限制。可能吗 limit_req_zone $binary_remote_addr zone=loginmin:10m rate=1tth; 我从你链接的文章中得到:无效率“rate=1th” 在源代码审查之后,我找到了一种方法,可以将最低速率降低到每天86个请求。下面的补丁增加了使用下一
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
我现在需要一个特定的位置每天10的限制。可能吗
limit_req_zone $binary_remote_addr zone=loginmin:10m rate=1tth;
我从你链接的文章中得到:无效率“rate=1th” 在源代码审查之后,我找到了一种方法,可以将最低速率降低到每天86个请求。下面的补丁增加了使用下一个配置指令的能力: 从中可以学到两件事:
fail2ban
。您可以创建自定义监狱:
# /usr/local/etc/fail2ban/jail.d/nginx-extreme-ratelimit.local
[nginx-extreme-ratelimit]
enabled = true
filter = nginx-ratelimit
action = pf <-- or ufw, ipfilter, ipfw, whatever firewall you use
logpath = /var/log/nginx-access.log
findtime = 86400
maxretry = 10
bantime = 86400
使用,您可以简单地说:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/d;
当然,使用此配置时,您的流量应该足够小(速率有限资源的访问量应该少于160K)
或者,您需要将区域的内存大小调整为足够大,以便在24小时内将所有访客IP地址容纳到速率有限的资源中。
tth
不是有效的度量。你是怎么想到这个的?@Herrbishoff
00 00 * * * /usr/local/bin/fail2ban-client set nginx-extreme-ratelimit unbanip 1.2.3.4
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/d;