我在 CentOS 6.4 上并且正在使用 Plesk v11.5.30,尽管这不一定需要通过 plesk 来完成。
我想限制特定网站的连接速度。但是 Plesk 给我的唯一选项是“最大带宽使用量”和“限制连接数”。
最大带宽使用量是域使用的总带宽,而连接数是连接数(显然)。我想要做的是将速度限制为 200kb/s,无论有多少人访问域。即使只有一个人访问,我也不希望他们能够使用所有带宽,我希望将他们的速度限制在 200kb/s
有没有办法可以将所有单独的连接限制为 200kb/s,以便没有人可以使用超过 200kb/s,但当然,如果流量很高,他们可能会使用低于 200kb/s?
为了避免这是 Plesk 特有的,这是我的配置文件中的内容,如果我可以使用其他参数,我很乐意手动修改它:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
Bandwidth all "0"
MaxConnection all "0"
BandWidthError 510
</IfModule>
答案1
我从来没有用过这个模块,但是文档看起来相当简单。
这些指令在块内有效<VirtualHost>
,并且只适用于该虚拟主机。它们似乎也不会从配置的更高部分继承,因此您应该将每个相关指令放在虚拟主机中。
您当前的配置将带宽限制设置为“0”,这意味着没有限制。您想要 200KB(我猜您指的是千字节而不是千比特)。
将其放入您想要限制的虚拟主机中:
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 204800
默认值为MinBandwidth
256 字节/秒,因此您可以同时处理 800 个用户,然后他们中的任何一个才会开始收到错误消息。如果您认为 256 字节/秒有点低,您还可以添加,MinBandwidth all 1024
这意味着当您有超过 200 个同时请求时,第 201 个请求将收到错误消息而不是他们请求的页面,并且之前的所有 200 个请求都将保证至少 1KB/秒。
我通常不理会这些<IfModule>
块,因为它们所做的只是隐藏你的错误并让你认为 mod_bw 正在工作,即使它还没有加载。
答案2
我使用 LargeFileLimit 解决了这个问题:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
Bandwidth all "52428800"
MaxConnection all "400"
LargeFileLimit * 1024 204800
BandWidthError 510
</IfModule>
这意味着该域名的带宽限制为 50mb(52428800),一次只能有 400 个连接,并且任何超过 1mb 的文件都将限制为 200kb/s(204800)。
对于稍后阅读此内容的任何人,您还可以使用扩展名代替 *,以限制仅为 zip、rar、avis 或其他。