Pentru cei care doresc sa limiteze banda la apache pentru clienti, ca masura de precautie pentru download-ul de diverse fisiere ori pentru evitarea epuizarii vitezei de upstream putem folosi modulul mod_bw.
Modulul specificat poate limita viteza pe apache dupa extensie, per virtual host, per client si / sau per total. Pentru a citi mai multe despre acest modul aveti urmatoarele url-uri de referinta:
* http://bwmod.sourceforge.net/
* http://bwmod.sourceforge.net/files/mod_bw-0.7.txt
Default, dupa compilare modulul nu functioneaza sub httpd 2.x ( apache2 ). Afiseaza o eroare ca in exemplul de mai jos:
httpd: Syntax error on line 59 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/mod_bw.so into server: /usr/local/apache2/modules/mod_bw.so:
Undefined symbol "apr_atomic_cas"
Pentru a evita eroarea de mai sus, editam sursa mod_bw.c la linia 61
root@dj[~/work/src/mod_bw] # pico +61 mod_bw.c
Aici stergem liniile urmatoare:
/* Compatibility for ARP < 1 */
#if (APR_MAJOR_VERSION < 1)
#define apr_atomic_inc32 apr_atomic_inc
#define apr_atomic_dec32 apr_atomic_dec
#define apr_atomic_add32 apr_atomic_add
#define apr_atomic_cas32 apr_atomic_cas
#define apr_atomic_set32 apr_atomic_set
#endif
Compilam si instalam modulul
root@dj[~/work/src/mod_bw] # /usr/local/apache2/bin/apxs -cia mod_bw.c
Editam fisierul de configurare de la virtualhost-ul pe care dorim sa-l limitam si adaugam liniile de configurare a limitei pentru modulul mod_bw, apoi se va executa restart la serviciul apache
root@dj[~/work/src/mod_bw] # /etc/rc.d/httpd restart
### -------------------------- ###
### Exemple configurare ###
### -------------------------- ###
## Se adauga in sectiunea virtual host-ului ##
## Pentru limitarea fiecarui vizitator la 128KB/s pe un virtual host
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 128000
MinBandwidth all -1
## Pentru limitarea extensiilor avi, mpg la 64KB/s
BandwidthModule On
ForceBandWidthModule On
LargeFileLimit .avi 1 64000
LargeFileLimit .mpg 1 64000