
我使用的是 CentOS 6.4,並使用 Plesk v11.5.30,儘管這不一定需要透過 plesk 完成。
我希望限制特定網站的連線速度。然而,Plesk 給我的唯一選項是「最大頻寬使用」和「限制連線」。
最大頻寬使用量是網域使用的總頻寬,而連線數是連線數(顯然)。我想要做的是將速度限制為 200kb/s,無論有多少人訪問該網域。即使只有一個人訪問,我也不希望他們能夠使用所有頻寬,我希望他們限制在 200kb/s
有沒有一種方法可以將所有單獨的連線限制為 200kb/s,這樣就沒有人可以使用超過 200kb/s 的速度,但當然,如果流量很高,他們可能會使用低於 200kb/s 的速度?
為了避免這是 plesk 特定的,這是我的 conf 中的內容,如果我可以使用其他一些參數,我很樂意手動修改它:
<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/s。
我通常不會理會這些<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、rars、avis 或其他內容。