2010-04-11 75 views
1

好吧,我有一個網站,它通過一個PHP腳本提供所有圖像和MP3,可以控制和限制,但我現在擔心我的網站的整體帶寬。例如,如果某人僅向我的某個網頁發送了一百萬個請求,該怎麼辦?有沒有人對服務器方法有任何建議用於防止這種情況?我應該使用mod_cband如何限制用戶帶寬使用?

回答

2

我個人喜歡做的是通過防火牆控制訪問,而不是Web服務器。使用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,並在鏈接上描述。

希望這有助於你

UPDATE: 作爲對我的評論,防火牆提到,如果你有機會獲得他們mod_throttle纔可用。正如您所提到的,您似乎處於共享環境中,因此您很可能無法訪問防火牆。可以做一些事情。

您可以啓用mod_deflate(如果您的主機可用,請先檢查),並避免熱鏈接(即其他網站使用您的資產,如圖像和JS)。一個例子是:

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

我在一個虛擬服務器上,並沒有訪問httpdconf文件,只有htaccess。這些方法是否仍然可行(包括防火牆)? – Scarface 2010-04-11 22:45:10

+1

如果你有訪問防火牆,那麼是的。如果你不這樣做,我會說你唯一能做的就是添加一些HTACCESS規則,比如使用mod_deflate,並停止盜鏈 – 2010-04-11 22:48:15

+0

感謝marcos,我可能只是讓主機安裝mod_cband或者mod_throttle組件。爲了澄清我自己的事情,你提到IPTABLES適用於防火牆。我現在對管理和開發人員都很陌生,所以我問你,你可能只是擴展你在那裏做的事情,比如你正在修改什麼文檔,或許可以引用你在linux中執行什麼命令。這隻會幫助我學習。再次感謝馬科斯。 – Scarface 2010-04-11 22:57:36