鱿鱼率限制

我想限制从单个IP获得的请求的数量,使用squid(假设我必须使用squid出于政治原因),阻止那些在一段时间内请求过多的请求。

我正在考虑写一个简短的Perl脚本和一个external_acl_type,有一个延迟池,但我不确定哪些参数可以传递给帮助函数。

就像是:

external_acl_type rate_limit / usr / bin / squid-access-control dst

但我不确定这是否会起作用?

所以我提出的解决scheme我认为是值得logging的,如下所示:

  • Squidlogging它收到的所有请求
  • 对于CDN请求,squid遵循X-forwarded-For标头,将实际的客户端IP留在日志中
  • Fail2ban检查日志,logging每分钟客户端请求的数量等
  • 当一个客户端发出X个请求时,它被放入到蠕动 IP列表中,这个请求被重写为指向负载均衡器上的一个web服务器。
  • Squid捡起来,拒绝这个请求访问实际的Web服务器,并允许他们访问负载均衡器上运行的thttpd服务器,该负载均衡器托pipe着一个“你被禁止”的网页。