1. 程式人生 > >Apache限制下載執行緒數與頻寬詳解

Apache限制下載執行緒數與頻寬詳解

2014年放了一臺伺服器到資料中心,發現下載量很大,大部份是用迅雷下載這樣會造成伺服器負擔過大,有人下載時會打不開網頁的現象,所以網上查詢解決下載限制的方法。
找到mod_limitipconn與mod_bw這兩個模組,前者是限制下載執行緒數,後者是限制頻寬但是發現,網上90%是轉載的文章,有些根本沒有實際使用過,經過我花大量的時間,才真正用上了這兩個模組。現在一個一個介紹。

首先要使用這兩個模組,必須在httpd.conf找到
LoadModule status_module modules/mod_status.so
將前面的#去掉
同時在這句下面寫上
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.dll
LoadModule bw_module modules/mod_bw.dll
我使用的是windows 如果是其它系統,dll 換成so
我使用的環境是XAMPP1.7.7 apache 2.2.21

mod_limitipconn

官網下載地址:http://dominia.org/djao/limitipconn.html
限制下載執行緒模組,我希望使用者只能開5個執行緒進行下載,只對ZIP,RAR做限制,不對其它檔案做

限制,所以使用者可以開啟N多個網頁,根據官方使用說明是這樣的
<Location />
    # 全域性設定,對所有網站進行
MaxConnPerIP 1
NoIPLimit image/*
  <Location /somewhere>
        # 對指定目錄設定,/somewhere代表網站根目錄下的somewhere
目錄
MaxConnPerIP 3
OnlyIPLimit audio/mpeg video
    </Location>

</Location>
上面表示什麼意思呢,就是說,對所有網站所有目錄,限制同一個IP只能訪問一次網站
但是 NoIPLimit image/* 對圖片不影響,也就是說,你開啟網頁只能開啟一次,你馬上開啟另一

個頁面會出現503的錯
OnlyIPLimit audio/mpeg video 表示僅對 音訊與視訊檔案做IP線制,而且是somewhere目錄 。

這就是官方的例子,也是大部份網站轉載的例子,但實際上根本不符合要求。
比如說 audio/mpeg video image/* 是怎麼來的呢,如何寫呢,這裡我告訴大家,這是MIME型別

,在apache的conf目錄中有一個mime.types檔案裡面列出了常用的MIME型別
現在,我要對ZIP,RAR檔案做限制,下載嘛,也就是這兩種檔案的包大,正確成功的寫法如下

<Location />
MaxConnPerIP 5
#OnlyIPLimit application/zip application/octet-stream application/x-rar-compressed
OnlyIPLimit application/zip application/x-rar-compressed
</Location>
看到沒,只允許使用者下載zip,rar同時開5個執行緒下載,開啟第6個就會返回503的錯
這裡有一點要注意,這個限制執行緒的模組MIME最好是確定的型別,像application/octet-stream
是不能成功的,這個表示bin iso等多種型別的MIME
只有像application/zip這種確定唯一型別的才會生效成功,多種型別之間用空格隔開

NoIPLimit的寫法和OnlyIPLimit是一樣的,這裡就不列出了,一般是用不上,下面這張圖是監控出來的效果,用的是卡巴網路監視

大家可以上我的網站

試試下載,看能不能5個以上執行緒正確下載

apache限速.jpg
mod_bw
官方下載地址
http://ivn.cl/2010/01/06/downloads-for-bandwidth-mod/
這個是限制頻寬的,網上有很多例子,都是正確的。
這裡我直接給出我伺服器上的配置
<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Satisfy all
    BandwidthModule  On //開啟On 關閉 off
    ForceBandwidthModule On//開啟On 關閉 off
    MaxConnection all 10000 限制最大IP數
    Bandwidth all 0
    MinBandwidth all 0
    LargeFileLimit * 512000 220000  //當檔案大於512M時限速220K每秒

</Directory>

我的官方網文章