我如何可以实施速度限制使用Apache?(请求每秒)
题
什么样的技术和/或模块,可用于实现强劲速度限制(请求|字节/ip/单位时间)在阿帕奇?
解决方案
其他提示
如此博客中所述帖子似乎可以使用 mod_security 来实现每秒的速率限制。
配置如下:
SecRuleEngine On
<LocationMatch "^/somepath">
SecAction initcol:ip=%{REMOTE_ADDR},pass,nolog
SecAction "phase:5,deprecatevar:ip.somepathcounter=1/1,pass,nolog"
SecRule IP:SOMEPATHCOUNTER "@gt 60" "phase:2,pause:300,deny,status:509,setenv:RATELIMITED,skip:1,nolog"
SecAction "phase:2,pass,setvar:ip.somepathcounter=+1,nolog"
Header always set Retry-After "10" env=RATELIMITED
</LocationMatch>
ErrorDocument 509 "Rate Limit Exceeded"
有许多方式,包括网络应用程序防火墙但是最简单的事情,以实现如果使用Apache国防部。
一个这样的国防部,我想建议的是 mod_qos.这是一个免费的模块,该模块是veryf有效地对国家计量院DOS、强制性和Slowloris类型的攻击。这会减轻你的服务器的负载。
这是很强大的.
电流释放 mod_qos 模块实现了控制机制以管理:
最大的并发请求数量的某个位置/资源 (URL)或虚拟的主机。
限制带宽等的 最大允许数量的要求,每秒一个网址或最大/最小的下载千字节/秒。
数限制的要求活动每第二(特殊请求 条件)。
- 限制的数量的请求的活动在限定的一段时间。
- 它还可以检测非常重要者(贵宾),它可以访问 网络服务器没有或较少的限制。
一般请求线和标题过滤器,拒绝未经授权的 操作。
要求体数据的限制和过滤(需要mod_parp).
限制的数量的请求的活动为个人客户(IP)。
限制TCP连接的水平,例如,最大号的 允许的连接从一个单一的源IP地址或动态 保持活动的控制。
- 更喜欢被称IP地址的服务器运行的自由TCP 连接。
这是一种样品配置什么的你可以用它。有数以百计的可能配置,以满足你的需要。访问该网站的更多信息的控制。
Sample configuration:
# minimum request rate (bytes/sec at request reading):
QS_SrvRequestRate 120
# limits the connections for this virtual host:
QS_SrvMaxConn 800
# allows keep-alive support till the server reaches 600 connections:
QS_SrvMaxConnClose 600
# allows max 50 connections from a single ip address:
QS_SrvMaxConnPerIP 50
# disables connection restrictions for certain clients:
QS_SrvMaxConnExcludeIP 172.18.3.32
QS_SrvMaxConnExcludeIP 192.168.10.
在Apache 2.4中,有一个名为 mod_ratelimit 的新库存模块STRONG> 。为了模拟调制解调器速度,您可以使用 mod_dialup 。虽然我不明白为什么你不能将mod_ratelimit用于所有事情。
可悲的是, mod_evasive
在非prefork配置中使用时不会按预期工作(最近的apache设置主要是MPM)
取决于您为什么要限价。
如果要防止服务器过载,将NGINX置于其前面实际上是有意义的,并配置限速。这是有道理的,因为NGINX使用的资源要少得多,就像每万个连接几MB一样。因此,如果服务器被泛洪,NGINX将进行速率限制(使用少量资源)并仅将允许的流量传递给Apache。
如果你所追求的只是简单,那就使用类似mod_evasive的东西。
像往常一样,如果要防范DDoS或DoS攻击,请使用像Cloudflare这样也具有速率限制的服务。