Apache伺服器限制併發連線和下載速度

iteye_3200發表於2010-08-18
目前各種多執行緒下載工具氾濫,這對提供部分下載功能的網站來說是個比較頭疼的問題,由於多執行緒下載會給伺服器帶來巨大的負載壓力,而且可能會對整個站點產生影響,使其不能正常訪問。那麼有沒有什麼方法可以解決這些問題呢?答案是肯定的。目前國內大部分站點都是基於LAMP(Linux+Apache+Mysql+php)架構的,Apache是一個開源的,功能強大,穩定,使用量最大的WEB伺服器。Apache是模組化開發的,可以根據需要增加各種功能模組,這裡我給大家介紹兩個模組,一個是mod_limitipconn,另一個是bw_mod。
下面說一下它們的安裝配置,它們的下載地址是:
mod_limitipconn:http://dominia.org/djao/limitipconn.html
bw_mod:http://www.ivn.cl/
一、mod_limitipconn
mod_limitipconn,這個是Apache的一個非官方模組,根據同一個來源IP進行併發連線控制,它是使用ExtendedStatus On的形式,工作在應用層。當同一個源IP的連線到達限制的時候,apache對get請求傳送: HTTP/1.1 503 Service Temporarily Unavailable,使使用者不能進行多執行緒下載,但並不能阻止攻擊。目前它的最新版本是0.22,支援Apache 2.0。

下載:wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz
解壓:tar zxvf mod_limitipconn-0.22.tar.gz;
安裝:在進行安裝前要確認apxs檔案的位置,要使用whereis apxs命令查詢apxs檔案的位置。可以通過兩種方法進行安裝。
一種方法是修改mod_limitipconn的Makefile檔案,確保Makefile檔案中APXS=指向正確的apxs檔案。
然後輸入:make install 
另一種方法就是直接用apxs命令進行編譯安裝,如:
/usr/local/apache/bin/apxs –c –i – a mod_limitipconn.c 
修改Apache的配置檔案httpd.conf:
1.找到ExtendedStatus On,如果前面有#號的話要把#號去掉,如果沒有這個選項需要自己手工新增;
2.確認LoadModule limitipconn_module /usr/lib/apache/mod_limitipconn.so這個選項存在;
3.在httpd.conf進行mod_limitipconn配置,配置示例如下:
<IfModule mod_limitipconn.c>
<Location /> #要限制的目錄,此處表示的根目錄
MaxConnPerIP 3 #要限制每個IP的併發連線數,此處為3
NoIPLimit image/* #對圖片資料夾不做IP限制
</Location>
<Location /mp3> #要限制的目錄,此處表示/mp3目錄
MaxConnPerIP 1 #限制每個IP的併發連線數為1個
OnlyIPLimit audio/mpeg video #該限制只對視訊和音訊格式的檔案
</Location>
</IfModule>
4.重啟Apache,這時可以用多執行緒下載工具下載檔案試一下。
二、bw_mod
Bw_mod,它可以根據來源IP進行頻寬限制。
下載:wget http://www.ivn.cl/files/source/bw_mod-0.6.tgz
解壓:tar zxvf bw_mod-0.6.tgz
安裝:通過whereis apxs命令找到apxs命令的位置,如apxs的位置是:/usr/local/apache/bin/apxs,那麼我們就可以通過:
/usr/local/apache/bin/apxs –c –i –a命令進行安裝。
修改Apache的配置檔案httpd.conf。
1.確認LoadModule bw_module modules/bw_mod-0.6.so選項已經存在。
2.配置示例:
BandWidthModule On #啟用bw_mod
BandWidth all 102400 #最高為為100kB
MinBandWidth all 51200 #最低為50KB
MaxConnection all 3 #所有客戶端最多3個連線
LargeFileLimit .rar 30 23000 #限制所有大於30K的字尾名為.rar的檔案的
速率為23000位元組/秒,即23K/秒
3.重啟Apache
以上只說了一下這兩個模組的安裝和簡單的配置,更具體的配置請看這兩個模組的說明檔案。

相關文章