目前各種多線程下載工具泛濫,這對提供部分下載功能的網站來說是個比較頭疼的問題,由于多線程下載會給服務器帶來巨大的負載壓力,而且可能會對整個站點產生影響,使其不能正常訪問。那么有沒有什么方法可以解決這些問題呢?答案是肯定的。目前國內大部分站點都是基于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
以上只說了一下這兩個模塊的安裝和簡單的配置,更具體的配置請看這兩個模塊的說明文件。