Il est disponible dans pas mal de distribution Linux, et s'installe facilement avec un apt ou un yum :

sudo apt-get install libapache2-mod-bw

Il faut ensuite l'activer :

sudo a2enmod bw

Et enfin le configurer.

A titre d'exemple, je vais configurer un serveur avec 5 téléchargements maximum, en allouant une bande passante de 8 Mbits maximum pour les fichiers zip sur notre serveur download.example.com et en personnalisant le message lorsque la limite est atteinte :

      <Virtualhost *>
...
      ServerName download.example.com
      BandWidthModule On
      BandWidth all 8000000
      AddOutputFilterByType MOD_BW  application/zip
      ErrorDocument 509 "too many users connected"
      BandWidthError 509
      MaxConnection all 5
...
   </Virtualhost>

  • BandWidthModule : Nécessaire pour activer la restriction
  • BandWidth all 8000000 : limite la bande passante totale pour tous les utilisateur à 8Mbits. On pourrait spécifier une limitation en fonction du domaine ou l'adresse IP de l'appelant :
 BandWidth download.from.host1.com 4000000
 BandWidth download.from.host2.com 4000000
 BandWidth 10.60.2.153 120000000
  • AddOutputFilterByType : Limite la restriction pour les fichiers ayant comme content-type 'application/zip'. Vous pouvez voir l'association content-type <=> extensions dans le fichier mime.conf.
  • BandWidthError : Définit le code d'erreur HTTP associé au dépassement de bande passante (403 par défaut)
  • ErrorDocument : Personnalise le message pour le code erreur HTTP 509
  • MaxConnection : seuls 5 téléchargement pourront être fait simultanément. il se partage les 8Mb. on peux limter les connections en fonctions des hosts :
   MaxConnection all 20
   MaxConnection 192.168.0.0/24 5

Enfin pour finir, il est possible de limiter la bande passante en fonction de la taille et de l'extension des fichiers :

 LargeFileLimit .avi 500 10240

Cela limite les fichiers avec l'extension avi ayant une taille >= 500kb à 10kbytes/s

Liens utiles : Documentation | Téléchargement