Services et serveurs

Apache : Limiter la bande passante avec ratelimit ou mod_bw

Table des matières

apache_logo



Introduction



Dans cet article, nous allons voir comment configurer des modules apache pour limiter la bande passante.
Cela peut être utile si Apache propulse un site qui héberge des fichiers.


Méthode avec le module ratelimit



Ce module permet de limiter la bande passante des clients. Cela s'applique à chaque requête HTTP.
Si on applique une limite de 1Mo/s, et que 3 fichiers sont téléchargés simultanément, la bande passante consommée est de 3Mo/s.

Le module ratelimit est inclus dans Apache depuis la version 2.4.

Pour activer le module :
Sous Gentoo, s'assurer que apache est installé avec le USE apache2_modules_ratelimit.
Sous CentOS 7, dé-commenter LoadModule ratelimit_module modules/mod_ratelimit.so dans /etc/httpd/conf.modules.d/00-base.conf
Sous CentOS 8, dé-commenter LoadModule ratelimit_module modules/mod_ratelimit.so dans /etc/httpd/conf.modules.d/00-optional.conf
Sous Debian, activer le module avec a2enmod ratelimit

Pour vérifier que le module est activé, exécuter

Code BASH :
apache2ctl -M | grep ratelimit

ou
Code BASH :
apachectl -M | grep ratelimit


Dans le VirtualHost, spécifier les valeurs lignes :

Code BASH :
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 400


La valeur de rate-limit est exprimée en ko/s.

Exemple dans une section d'un VirtualHost :

Code BASH :
<Location "/archives">
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 1024 #Limite de 1Mo/s
</Location>



Méthode avec le module mod_bw



Ce module permet de limiter la bande passante des clients. Cela s'applique à la globalité du VirtualHost.
Si on applique une limite de 1Mo/s, et que 3 fichiers sont téléchargés simultanément, la bande passante consommée est de 1Mo/s, chaque fichier sera téléchargé avec un débit de 333ko/s.

Sous Gentoo, on installe le module via :
Code BASH :
emerge -av www-apache/mod_bw


Sous Debian, on installe le module via :
Code BASH :
apt install libapache2-mod-bw


Sous CentOS, le module n'est disponible que dans EPEL pour CentOS 6 (au 30/01/2020, ce n'est ni disponible pour CentOS 7, ni CentOS 8) :
Code BASH :
yum install mod_bw


Pour vérifier que le module est activé, exécuter

Code BASH :
apache2ctl -M | grep bw

ou
Code BASH :
apachectl -M | grep bw


Une fois le module installé et activé, on définit dans le VirtualHost les directives pour appliquer la limitation de la bande passante :

Code BASH :
BandwidthModule On
ForceBandWidthModule On
Bandwidth all "1024000"


La valeur de Bandwidth est exprimée en o/s.
Cette page a été vue 4762 fois