如何限制用户带宽使用?

时间:2010-04-11 22:32:01

标签: apache

好吧,我有一个网站,它通过php脚本提供所有图像和mp3,可以控制和限制,但我现在担心我的网站的整体带宽。例如,如果有人只向我的一个页面发送了一百万个请求怎么办?有没有人对用于防止这种情况的服务器方法有任何建议?我应该使用mod_cband吗?

1 个答案:

答案 0 :(得分:2)

我个人喜欢做的是通过防火墙而不是网络服务器来控制访问。使用IPTABLES(仅限Linux)来防止单个IP启动超过指定数量的连接。这是试验和错误,因为你需要正确计算它,但总的来说,这应该可以防止攻击者的连接率

iptables -A INPUT -p TCP --dport 80 -m state --state NEW -j STOP-ABUSE
iptables -A STOP-ABUSE -m recent --set
iptables -A STOP-ABUSE -m recent --update --seconds 10 --hitcount 3 -j DROP

mod_cband也相当不错(虽然我已经停止使用它,只留下了如上所述的防火墙),我认为这两种方法的组合将带来满意的效果。

此外,我建议您查看mod_throttle,并在链接中进行说明。

希望这有助于你

<强>更新 正如我的评论所述,防火墙和mod_throttle只有在您有权访问时才可用。正如您所提到的,您似乎处于共享环境中,因此您很可能无法访问防火墙。但是可以做一些事情。

您可以启用mod_deflate(如果主机可用,请与您的主机核实),还可以避免热链接(即使用您的资源(如图片和JS)的其他网站)。一个例子是:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]