我需要检测那些冒充经过身份验证的用户并通过发送重复请求来占用数据库可用连接的机器人。我想知道是否可以使用 nginx 指令来阻止它们?
这个想法是在 nginx 配置中设置一些规则,以便在一定时间范围内连接超过一定次数(比如每分钟 30 次)的 IPS 会被自动拒绝。
答案1
有一个模块可以实现这一点!HttpLimitReq模块。模块文档有一个不错的示例,足以让您入门。但是,基于 IP 的速率限制存在一些相当严重的限制——CGN 和某些类型的强制代理使多个用户来自同一个 IP 地址,而其他类型的强制代理使一个用户来自多个 IP 地址。然后,您就可以在负载平衡集群中享受速率限制的乐趣和游戏了……但如果您乐于处理这些权衡,nginx 模块确实可以完全按照其名称执行。