答案1
您当然可以使用 limit_req_zone 模块在 nginx 中做到这一点。
在 nginx.conf 设置一个区域:
limit_req_zone $binary_remote_addr zone=one:1000m rate=100r/m;
您也可以使用它X_Forwarded_For
来代替binary_remote_addr
。
在您的站点配置位置块中只需引用区域:
limit_req zone=one burst=10 nodelay;
文件: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
答案2
您可以使用 fail2ban 并使用以下 jail 与 nginx 一起对配置错误的机器人进行速率限制
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 并在底部添加
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10