Gestione della banda in Apache: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Riga 70: Riga 70:
Come prima cosa procuriamoci il modulo dal [http://www.ivn.cl/apache/ sito dello sviluppatore]. A questo punto estraiamolo:
Come prima cosa procuriamoci il modulo dal [http://www.ivn.cl/apache/ sito dello sviluppatore]. A questo punto estraiamolo:
<pre># tar vzxf bw_mod-6.0.tgz</pre>
<pre># tar vzxf bw_mod-6.0.tgz</pre>
spostiamoci nella cartella appena creata (''bw_mod-6.0.tgz'') e verifichiamo che sia presente il file ''bw_mod-6.0.c''.
spostiamoci nella cartella appena creata (<code>bw_mod-6.0.tgz</code>) e verifichiamo che sia presente il file <code>bw_mod-6.0.c</code>.


Ora, per poter compilare il nostro modulo, ci servono gli strumenti per farlo: nel nostro caso dovremo installare, tramite apt-get, il pacchetto '''apache2-dev''':
Ora, per poter compilare il nostro modulo, ci servono gli strumenti per farlo: nel nostro caso dovremo installare, tramite apt-get, il pacchetto <code>'''apache2-dev'''</code>:
<pre># apt-get install apache2-dev</pre>
<pre># apt-get install apache2-dev</pre>
Bene, ora compiliamo tramite il comando ''/usr/bin/apsx2'':
Bene, ora compiliamo tramite il comando <code>/usr/bin/apsx2</code>:
<pre># /usr/bin/apxs2 -i -a -c bw_mod-0.6.c</pre>
<pre># /usr/bin/apxs2 -i -a -c bw_mod-0.6.c</pre>
Se non ci sono errori, possiamo procedere. Alla fine della compilazione sono state automaticamente aggiunte queste righe al file ''/etc/apache2/httpd.conf'':
Se non ci sono errori, possiamo procedere. Alla fine della compilazione sono state automaticamente aggiunte queste righe al file <code>/etc/apache2/httpd.conf</code>:
<pre>Include /etc/apache2/sysconfig.d/loadmodule.conf
<pre>Include /etc/apache2/sysconfig.d/loadmodule.conf
LoadModule bw_module /usr/lib/apache2/bw_mod-0.6.so</pre>
LoadModule bw_module /usr/lib/apache2/bw_mod-0.6.so</pre>
{{Box | Nota |Apache2 usa come file di configurazione ''/etc/apache2/apache2.conf''; tuttavia, per retrocompatibilità, è presente anche un file ''/etc/apache2/httpd.conf'' in cui vengono inseriti solitamente gli "includes" dei moduli di terze parti laddove questi non usino il sistema '''mods-available/mods-enabled'''.
{{Box | Nota |Apache2 usa come file di configurazione <code>/etc/apache2/apache2.conf</code>; tuttavia, per retrocompatibilità, è presente anche un file <code>/etc/apache2/httpd.conf</code> in cui vengono inseriti solitamente gli "includes" dei moduli di terze parti laddove questi non usino il sistema <code>'''mods-available/mods-enabled'''</code>.


In questo caso non dobbiamo preoccuparci, in quanto nel file ''apache2.conf'' c'è un richiamo a ''httpd.conf''.}}
In questo caso non dobbiamo preoccuparci, in quanto nel file <code>apache2.conf</code> c'è un richiamo a <code>httpd.conf</code>.}}


==mod_bwshare==
==mod_bwshare==
Riga 90: Riga 90:
==mod_bandwidth==
==mod_bandwidth==
Ora configuriamo apache per utilizzare mod_bandwidth.<br/>
Ora configuriamo apache per utilizzare mod_bandwidth.<br/>
Aggiungiamo il modulo al file '''/etc/apache/modules.conf'''. Per fare questo abbiamo due possibilità:
Aggiungiamo il modulo al file <code>'''/etc/apache/modules.conf'''</code>. Per fare questo abbiamo due possibilità:
* modificare a mano il file, aggiungendo la seguente riga, alla finedel file:
* modificare a mano il file, aggiungendo la seguente riga, alla fine del file:
<pre>
<pre>
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so
LoadModule bandwidth_module /usr/lib/apache/1.3/mod_bandwidth.so
</pre>
</pre>
*utilizzare modules-config:
*utilizzare <code>modules-config></code>:
<pre>
<pre>
modules-config apache enable mod_bandwidth
modules-config apache enable mod_bandwidth
</pre>
</pre>


Creiamo le cartelle temporanee per mod_bandwidth:
Creiamo le cartelle temporanee per <code>mod_bandwidth</code>:
<pre>
<pre>
# mkdir /tmp/apachebw
# mkdir /tmp/apachebw
Riga 108: Riga 108:
# chmod -R 775 /tmp/apachebw
# chmod -R 775 /tmp/apachebw
</pre>
</pre>
(ricordiamoci che è possibile che qualche script ripulica la directory '''/tmp''', quindi cambiamo la posizione di queste cartelle con la direttiva BandWidthDataDir).
(ricordiamoci che è possibile che qualche script ripulisca la directory <code>'''/tmp'''</code>, quindi cambiamo la posizione di queste cartelle con la direttiva <code>BandWidthDataDir</code>).


Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione:
Ecco fatto, ora con il seguente comando facciamo rileggere ad apache i file di configurazione:
Riga 116: Riga 116:


===Note per il corretto funzionamento===
===Note per il corretto funzionamento===
Per ottenere risultati, è importante che non ci siano dei link morti nella directory '''link''' di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo.
Per ottenere risultati, è importante che non ci siano dei link morti nella directory <code>'''link'''</code> di mod_bandwidth, quando viene eseguito avviato il server con il modulo attivo.


Potrebbe essere una buona idea, a questo scopo, eseguire lo script '''cleanlink.pl''', che provvede a rimuovere automaticamente i link morti.
Potrebbe essere una buona idea, a questo scopo, eseguire lo script <code>'''cleanlink.pl'''</code>, che provvede a rimuovere automaticamente i link morti.




Riga 124: Riga 124:
===Direttive globali di configurazione===
===Direttive globali di configurazione===


===='''BandWidthDataDir'''====
====<code>'''BandWidthDataDir'''</code>====
'''Sintassi''': BandWidthDataDir <directory><br/>
'''Sintassi''': <code>BandWidthDataDir <directory></code><br/>
'''Default''': "/tmp/apachebw"<br/>
'''Default''': <code>/tmp/apachebw</code><br/>
'''Contesto''': server config<br/>
'''Contesto''': server config<br/>
Imposta la directory in cui mod_bandwidth conserve i suoi file temporanei. All'interno di questa directory devono essere presenti anche le directory link e master; tutte queste cartelle devono essere scrivibili da apache (che in debian utilizza l'utente ed il gruppo www-data)
Imposta la directory in cui mod_bandwidth conserve i suoi file temporanei. All'interno di questa directory devono essere presenti anche le directory link e master; tutte queste cartelle devono essere scrivibili da apache (che in Debian utilizza l'utente ed il gruppo www-data).




===='''BandWidthModule'''====
====<code>'''BandWidthModule'''</code>====
'''Sintassi''': BandWidthModule <On|Off><br/>
'''Sintassi''': <code>BandWidthModule <On|Off></code><br/>
'''Default''': Off<br/>
'''Default''': <code>Off</code><br/>
'''Contesto''': per server config<br/>
'''Contesto''': per server config<br/>
Abilita o disabilita il modulo.
Abilita o disabilita il modulo.


'''NOTA:''' Per utilizzarlo all'interno di un virtual host, è necessario inserire la direttiva '''BandWidthModule On''' all'interno del blocco del virtual host. Se viene attivato globalmente (cioè all'interno del file httpd.conf, fuori da ogni blocco), il modulo è attivo automaticamente in tutti i sottoblocci (Virtual Host, etc..)
{{Box|NOTA:|Per utilizzarlo all'interno di un virtual host, è necessario inserire la direttiva <code>'''BandWidthModule On'''</code> all'interno del blocco del virtual host. Se viene attivato globalmente (cioè all'interno del file <code>httpd.conf</code>, fuori da ogni blocco), il modulo è attivo automaticamente in tutti i sottoblocchi (Virtual Host, etc).}}




===='''BandWidthPulse'''====
====<code>'''BandWidthPulse'''</code>====
'''Sintassi''': BandWidthPulse <microseconds><br/>
'''Sintassi''': <code>BandWidthPulse <microseconds></code> <br/>
'''Default''':<br/>
'''Default''':<br/>
'''Contesto''': per server config<br/>
'''Contesto''': per server config<br/>


Modifica l'algoritmo usato per calcolare la larghezza di banda e per trasmettere i dati. Nella modalità normale (obsoleta), il modulo cerca di tramettere i dati in pacchetti di 1Kb. Questo vuol dire che, se la banda disponibile è di 512B, il modulo trasmette 1Kb, aspetta 2 secondi, trasmette 1Kb e così via... Impostando questa direttiva, verrà cambiato l'algoritmo in modo che il server
Modifica l'algoritmo usato per calcolare la larghezza di banda e per trasmettere i dati. Nella modalità normale (obsoleta), il modulo cerca di tramettere i dati in pacchetti di 1Kb. Questo vuol dire che, se la banda disponibile è di 512B, il modulo trasmette 1Kb, aspetta 2 secondi, trasmette 1Kb e così via. Impostando questa direttiva, verrà cambiato l'algoritmo in modo che il server aspetterà sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varierà di conseguenza, così da rispettare i criteri indicati nelle altre direttive. Il valore è in microsecondi.
aspetterà sempre lo stesso lasso di tempo, prima di trasmettere pacchetti, e la dimensione dei pacchetti varierà di conseguenza, così da rispettari i criteri indicati nelle altre direttive. Il valore è in microsecondi.


'''Esempio:'''  
'''Esempio:'''  
Riga 152: Riga 151:
BandWidthPulse 1000000 #1 secondo
BandWidthPulse 1000000 #1 secondo
</pre>
</pre>
Se oltre a questa direttiva è presente un limite a 512B, il server trasmetterà 512B, aspetterà un secondo, trametterà 512B, aspetterà un secondo e così via.
Se oltre a questa direttiva è presente un limite a 512B, il server trasmetterà 512B, aspetterà un secondo, trasmetterà 512B, aspetterà un secondo e così via.




===Direttive per la configurazione di Directory e/o VirtualServer===
===Direttive per la configurazione di Directory e/o VirtualServer===


===='''BandWidth'''====
====<code>'''BandWidth'''</code>====
'''Sintassi''': BandWidth <domain|ip|all> <rate><br/>
'''Sintassi''': <code>BandWidth <domain|ip|all> <rate></code><br/>
'''Default''': none<br/>
'''Default''': <code>none</code><br/>
'''Contesto''': per directory, .htaccess<br/>
'''Contesto''': per directory, .htaccess<br/>


Limita la banda per i file contenuti nella directory e nelle sub-directory, in base alla provenienza (dominio, ip, all).
Limita la banda per i file contenuti nella directory e nelle sub-directory, in base alla provenienza (dominio, ip, all).
Gli indirizzi IP possono essere specificati anche nel formato network/netmask (Es: 192.168.0.0/21) '''<rate>''' deve essere espresso in Byte/secondo. Impostato a "0" indica nessun limite di banda. Possono essere impostati più limiti per la stessa directory; in questo caso, è
Gli indirizzi IP possono essere specificati anche nel formato network/netmask (Es: 192.168.0.0/21) <code>'''<rate>'''</code> deve essere espresso in Byte/secondo. Impostato a <code>0</code> indica nessun limite di banda. Possono essere impostati più limiti per la stessa directory; in questo caso, è
importante l'ordine con cui vengono inserite le direttive, in quando mod_bandwidth li scorre dal primo all'ultimo, fermandosi a quello che
importante l'ordine con cui vengono inserite le direttive, in quando mod_bandwidth li scorre dal primo all'ultimo, fermandosi a quello che
rispecchia la situazione  
rispecchia la situazione.


'''Esempio:'''
'''Esempio:'''
Riga 178: Riga 177:




===='''LargeFileLimit'''====
====<code>'''LargeFileLimit'''</code>====
'''Sintassi''': LargeFileLimit <filesize> <rate><br/>
'''Sintassi''': <code>LargeFileLimit <filesize> <rate></code><br/>
'''Default''': none<br/>
'''Default''': <code>none</code><br/>
'''Contesto''': per directory, .htaccess<br/>
'''Contesto''': per directory, .htaccess<br/>


Imposta un limite '''<rate>''' da usare quando si trasferiscono file di dimensioni uguali o maggiori a <filesize>
Imposta un limite <code>'''<rate>'''</code> da usare quando si trasferiscono file di dimensioni uguali o maggiori a <code><filesize></code>.
E' possibile utilizzare più direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a "0", non sarà impostato alcun limite (rimarrà, ovviamente, l'eventuale limite impostato in BandWidth). Se viene impostato a "-1", invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva BandWidth) per i file la cui dimensione rispecchia quella direttiva.
È possibile utilizzare più direttive per diverse dimensioni; anche in questo caso, se il parametro viene impostato a <code>0</code>, non sarà impostato alcun limite (rimarrà, ovviamente, l'eventuale limite impostato in <code>BandWidth</code>). Se viene impostato a <code>-1</code>, invece, saranno aboliti tutti i limiti (anche quelli impostati con la direttiva <code>BandWidth</code>) per i file la cui dimensione rispecchia quella direttiva.


'''Esempio:'''
'''Esempio:'''
Riga 192: Riga 191:
</pre>
</pre>
Queste direttive portano a questa situazione:
Queste direttive portano a questa situazione:
* i file più piccoli di 200Kb, non verranno limitati da queste direttive (rimane attiva la direttiva BandWidth);
* i file più piccoli di 200Kb, non verranno limitati da queste direttive (rimane attiva la direttiva <code>BandWidth</code>);
* i file di dimensione compresa tra 200Kb e 1023Kb, saranno limitati a 3072Kb/sec;
* i file di dimensione compresa tra 200Kb e 1023Kb, saranno limitati a 3072Kb/sec;
* i file di dimensione maggiore di 1024Kb, saranno limitati a 2048Kb/sec.
* i file di dimensione maggiore di 1024Kb, saranno limitati a 2048Kb/sec.




===='''MaxConnection'''====
====<code>'''MaxConnection'''</code>====
'''Sintassi''': MaxConnection <connections><br/>
'''Sintassi''': <code>MaxConnection <connections></code><br/>
'''Default''': 0 (illimitate)<br/>
'''Default''': <code>0</code> (illimitate)<br/>
'''Contesto''': per directory, .htaccess<br/>
'''Contesto''': per directory, .htaccess<br/>


Imposta il numero di connessioni massime che possono avvenire contemporaneamente.Una volta raggiunto il limite impostato, le nuove connessioni verranno rifiutate. Se impostato a "0" (valore di default) non saranno presenti delle limitazioni per quanto riguarda il numero di connessioni simultanee (se non quello impostato nelle direttive principali di Apache).
Imposta il numero di connessioni massime che possono avvenire contemporaneamente. Una volta raggiunto il limite impostato, le nuove connessioni verranno rifiutate. Se impostato a <code>0</code> (valore di default) non saranno presenti delle limitazioni per quanto riguarda il numero di connessioni simultanee (se non quello impostato nelle direttive principali di Apache).




===='''MinBandWidth'''====
====<code>'''MinBandWidth'''</code>====
'''Sintassi''': MinBandWidth <domain|ip|all> <rate><br/>
'''Sintassi''': <code>MinBandWidth <domain|ip|all> <rate></code><br/>
'''Default''': all 256<br/>
'''Default''': <code>all 256</code><br/>
'''Contesto''': per directory, .htaccess<br/>
'''Contesto''': per directory, .htaccess<br/>


Imposta una banda minima per il trasferimento dei dati. Questa direttiva può sovrascrivere le direttive BandWidth e LargeFileLimit, in quanto, in presenza di un numero elevato di connessioni, verrà garantita a tutte la larghezza indicata con questa direttiva, anche se il totale supererà i limiti. Il primo argomnto è da usarsi come per la direttiva BandWidth. deve essere espresso in Byte/Secondo; se viene impostato a 0, verrà usato il valore di default (256).
Imposta una banda minima per il trasferimento dei dati. Questa direttiva può sovrascrivere le direttive <code>BandWidth</code> e <code>LargeFileLimit</code>, in quanto, in presenza di un numero elevato di connessioni, verrà garantita a tutte la larghezza indicata con questa direttiva, anche se il totale supererà i limiti. Il primo argomento è da usarsi come per la direttiva <code>BandWidth</code>. Deve essere espresso in Byte/Secondo; se viene impostato a <code>0</code>, verrà usato il valore di default (256).


'''Esempio :'''
'''Esempio :'''
Riga 224: Riga 223:
* tre o più connessioni: velocità di trasferimento = 1024 Bytes/sec.
* tre o più connessioni: velocità di trasferimento = 1024 Bytes/sec.


Se MinBandWidth è impostato a "-1" accade che:
Se<code>MinBandWidth</code> è impostato a <code>-1</code> accade che:
* se c'è solo una connessione, il file viene trasferito a 3072 Bytes/sec.
* se c'è solo una connessione, il file viene trasferito a 3072 Bytes/sec;
* se ci sono una o più connessioni, ogni file viene trasferito a 3072 Bytes/sec. La velocità non dipende più dal numero di connessioni, ma solo dai valori delle direttive.
* se ci sono una o più connessioni, ogni file viene trasferito a 3072 Bytes/sec. La velocità non dipende più dal numero di connessioni, ma solo dai valori delle direttive.


Ovviamente, la velocità di trasferimento totale non potrà mai superare la vostra larghezza di banda...
Ovviamente, la velocità di trasferimento totale non potrà mai superare la vostra larghezza di banda.


{{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva "BandWidth" sia uno impostato nella direttiva "LargeFileLimit", verrà applicato il più piccolo (ma mai minore a quello eventialmente indicato nella direttiva "MinBandWidth")}}
{{Box|NOTA:|Se ad una richiesta devono essere applicati sia un limite impostato nella direttiva <code>BandWidth</code> sia uno impostato nella direttiva <code>LargeFileLimit</code>, verrà applicato il più piccolo (ma mai minore a quello eventualmente indicato nella direttiva <code>MinBandWidth</code>)}}


==bw_mod==
==bw_mod==
In Apache2 la configurazione globale del server può essere separata da quella dei VHosts e delle Directories. Sono presenti, infatti, due files: <tt>/etc/apache2/apache2.conf</tt>, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio <tt>httpd.conf</tt>); e <tt>/etc/apache2/sites-enabled/000-default</tt>, in cui ci sono le direttive per VHosts e Directories (in realtà è un link simbolico al file <tt>/etc/apache2/sites-available/default</tt>).<br/>
In Apache2 la configurazione globale del server può essere separata da quella dei VHosts e delle Directory. Sono presenti, infatti, due file: <tt>/etc/apache2/apache2.conf</tt>, in cui sono inserite le configurazioni globali del server (praticamente la maggior parte delle direttive del vecchio <tt>httpd.conf</tt>); e <tt>/etc/apache2/sites-enabled/000-default</tt>, in cui ci sono le direttive per VHosts e Directories (in realtà è un link simbolico al file <tt>/etc/apache2/sites-available/default</tt>).<br/>
Per poter, quindi, configurare il nostro ''bw_mod'', possiamo inserire le prime quattro direttive della seguente lista in <tt>apache2.conf</tt> come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in <tt>apache2.conf</tt>, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in <tt>000-default</tt> nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.<br/>
Per poter, quindi, configurare il nostro ''bw_mod'', possiamo inserire le prime quattro direttive della seguente lista in <tt>apache2.conf</tt> come variabili globali, mentre tutte le altre possono essere inserite indifferentemente in <tt>apache2.conf</tt>, se vogliamo applicare le limitazioni a tutti i siti serviti dal serverweb, oppure in <tt>000-default</tt> nelle apposite sezioni, se vogliamo applicarle a specifici VHosts o Directories.<br/>
{{ Warningbox | Momentaneamente il modulo '''non supporta il sistema .htaccess''', quindi non è possibile inserire le direttive in questi files.<br/>
{{ Warningbox | Momentaneamente il modulo '''non supporta il sistema .htaccess''', quindi non è possibile inserire le direttive in questi file.<br/>
In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo ''mod_bandwidth'' dove è indicata la possibilità d'uso in .htaccess: con ''bw_mod'' non bisogna prendere in considerazione quei '''contesti'''.}}
In alcuni punti della guida si fa riferimento alla configurazione di direttive del modulo ''mod_bandwidth'' dove è indicata la possibilità d'uso in .htaccess: con ''bw_mod'' non bisogna prendere in considerazione quei '''contesti'''.}}


==='''Direttive globali'''===
==='''Direttive globali'''===
===='''BandWidthModule'''====
====<code>'''BandWidthModule'''</code>====
'''Sintassi''': <tt>BandWidthModule On|Off</tt><br/>
'''Sintassi''': <tt>BandWidthModule On|Off</tt><br/>
'''Default''': <tt>Off</tt><br/>
'''Default''': <tt>Off</tt><br/>
Tramite questa direttiva attiviamo o disattiviamo il modulo
Tramite questa direttiva attiviamo o disattiviamo il modulo


===='''BandWidthDebug'''====
====<code>'''BandWidthDebug'''</code>====
'''Sintassi''': <tt>BandWidthDebug On|Off</tt><br/>
'''Sintassi''': <tt>BandWidthDebug On|Off</tt><br/>
'''Default''': <tt>Off</tt><br/>
'''Default''': <tt>Off</tt><br/>
Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo).
Questa direttiva serve ad attivare la funzione di debug (utile per chi si vuole divertire a sviluppare il modulo).


===='''BandWidthPacket'''====
====<code>'''BandWidthPacket'''</code>====
'''Sintassi''': <tt>BandWidthPacket <Dimensione pacchetti in bytes></tt><br/>
'''Sintassi''': <tt>BandWidthPacket <Dimensione pacchetti in bytes></tt><br/>
'''Default''': <tt>8192</tt><br/>
'''Default''': <tt>8192</tt><br/>
Riga 256: Riga 255:
In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi.
In caso si usino valori eccessivi per la propria connessione, il modulo riporterà automaticamente la direttiva a valori più bassi.


===='''BandWidthError'''====
====<code>'''BandWidthError'''</code>====
'''Sintassi''': <tt>BandWidthError <Num. Errore></tt><br/>
'''Sintassi''': <tt>BandWidthError <Num. Errore></tt><br/>
''' Default''': <tt>none</tt> (Vengono usati i valori standard di Apache2).<br/>
''' Default''': <tt>none</tt> (Vengono usati i valori standard di Apache2).<br/>
In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con ''MaxConnection'', con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <Num. Errore> ed eventualmente, mettendo mano alla direttiva ErrorDocument in <tt>/etc/apache2/apache2.conf</tt>, quale pagina deve essere mostrata.<br/>
In caso vogliamo personalizzare la pagina di errore quando si raggiungono i limiti impostati con <code>''MaxConnection''</code>, con questa direttiva possiamo indicare ad apache che tipo di errore mostrare con <code><Num. Errore></code> ed eventualmente, mettendo mano alla direttiva <code>ErrorDocument</code> in <tt>/etc/apache2/apache2.conf</tt>, quale pagina deve essere mostrata.<br/>
Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in apache2.conf la sezione con tutti gli errori che apache può restituire al browser).
Di default, quando viene raggiunto il numero massimo di connessioni, viene mostrata la classica pagina d'errore 503 HTTP_SERVICE_UNAVAILABLE (possiamo controllare in <code>apache2.conf</code> la sezione con tutti gli errori che apache può restituire al browser).
Se usiamo una pagina d'errore personalizzata, è importante che l'errore associato alla nostra pagina non sia già usato da apache (l'autore del modulo ha testato con successo l'errore numero 510).
Se usiamo una pagina d'errore personalizzata, è importante che l'errore associato alla nostra pagina non sia già usato da apache (l'autore del modulo ha testato con successo l'errore numero 510).
Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere:
Per esempio, per usare una pagina d'errore personalizzata, possiamo scrivere:
<pre>ErrorDocument 510 /errors/paginaerrore.html</pre>
<pre>ErrorDocument 510 /errors/paginaerrore.html</pre>
nella direttiva ErrorDocument in <tt>etc/apache2/apache2.conf</tt>, e
nella direttiva <code>ErrorDocument</code> in <tt>etc/apache2/apache2.conf</tt>, e
<pre>BandWidthError 510</pre>
<pre>BandWidthError 510</pre>
nella direttiva BandWidthError.
nella direttiva <code>BandWidthError</code>.


{{ Warningbox | Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: è opportuno, quindi, creare pagine più grandi di questo valore. }}
{{ Warningbox | Possono sorgere problemi quando la pagina d'errore personalizzata ha una dimensione minore di 1024bytes: è opportuno, quindi, creare pagine più grandi di questo valore. }}
Riga 272: Riga 271:
==='''Direttive per la configurazione di Directory e/o VirtualServer'''===
==='''Direttive per la configurazione di Directory e/o VirtualServer'''===


===='''ForceBandWidthModule'''====
====<code>'''ForceBandWidthModule'''</code>====
'''Sintassi''': <tt>ForceBandWidthModule On|Off</tt><br/>
'''Sintassi''': <tt>ForceBandWidthModule On|Off</tt><br/>
'''Default''': <tt>On</tt><br/>
'''Default''': <tt>On</tt><br/>
Di default, naturalmente, il modulo processerà e applicherà i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali files debbano essere soggetti alla limitazione di banda, si può settare questa direttiva su ''off'', aggiungendo, poi, i tipi di file cui deve essere applicato il limite:
Di default, naturalmente, il modulo processerà e applicherà i limiti a ogni richiesta al webserver. In caso si voglia indicare manualmente quali file debbano essere soggetti alla limitazione di banda, si può settare questa direttiva su <code>''off''</code>, aggiungendo, poi, i tipi di file cui deve essere applicato il limite:
<pre>ForceBandWidthModule Off
<pre>ForceBandWidthModule Off
AddOutputFilterByType BW_MOD text/html text/php</pre>
AddOutputFilterByType BW_MOD text/html text/php</pre>


===='''BandWidth'''====
====<code>'''BandWidth'''</code>====
'''Sintassi''': <tt>BandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Sintassi''': <tt>BandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Default''': <tt>all 0</tt><br/>
'''Default''': <tt>all 0</tt><br/>
Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''.
Vedi [[#BandWidth | BandWidth]] del ''mod_bandwidth''.


===='''MinBandWidth'''====
====<code>'''MinBandWidth'''</code>====
'''Sintassi''': <tt>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Sintassi''': <tt>MinBandWidth <Origine della connessione> <Limite di banda in bytes/s></tt><br/>
'''Default''': <tt>all 0</tt><br/>
'''Default''': <tt>all 0</tt><br/>
Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''.
Vedi [[#MinBandWidth | MinBandWidth]] del ''mod_bandwidth''.


===='''LargeFileLimit'''====
====<code>'''LargeFileLimit'''</code>====
'''Sintassi''': <tt>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></tt><br/>
'''Sintassi''': <tt>LargeFileLimit <Tipo di file> <Dimensione minima file in KB> <Limite in bytes/s></tt><br/>
'''Default''': <tt>none</tt><br/>
'''Default''': <tt>none</tt><br/>
Con questa direttiva possiamo indicare un limite di trasferimento <Limite in bytes/s> per un determinato tipo di file <Tipo di file> che abbia la dimensione minima indicata con <dimensione minima del file in KB>.
Con questa direttiva possiamo indicare un limite di trasferimento <code><Limite in bytes/s></code> per un determinato tipo di file <code><Tipo di file></code> che abbia la dimensione minima indicata con <code><dimensione minima del file in KB></code>.
Il parametro <Tipo di file> viene espresso con l'estensione del file (p.e. ''.avi'', ''.exe'', ''.tgz''); si può usare il carattere jolly ''*'' per indicare ogni tipo di file.
Il parametro <code><Tipo di file></code> viene espresso con l'estensione del file (p.e. <code>''.avi''</code>, <code>''.exe''</code>, <code>''.tgz''</code>); si può usare il carattere jolly <code>''*''</code> per indicare ogni tipo di file.
La <Dimensione minima file in KB>, come scritto, viene indicata in kilobytes.
La <code><Dimensione minima file in KB></code>, come scritto, viene indicata in kilobytes.
Il <Limite in bytes/s> indica la velocità massima alla quale verranno trasferiti i files interessati da questa direttiva.
Il <code><Limite in bytes/s></code> indica la velocità massima alla quale verranno trasferiti i files interessati da questa direttiva.
Per esempio, con:
Per esempio, con:
<pre>LargeFileLimit .avi 500 10240</pre>
<pre>LargeFileLimit .avi 500 10240</pre>
diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovrà applicare uua velocità massima di trasferimento di 10kb/s.
diciamo al webserver che per i video con estensione AVI che abbiano dimensioni dai 500 kb in su, dovrà applicare uua velocità massima di trasferimento di 10kb/s.


===='''MaxConnection'''====
====<code>'''MaxConnection'''</code>====
'''Sintassi''': <tt>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></tt><br/>
'''Sintassi''': <tt>MaxConnection <Origine delle connessioni> <Num. massimo connessioni></tt><br/>
'''Default''': <tt>all 0</tt> (Illimitate da ogni origine).<br/>
'''Default''': <tt>all 0</tt> (Illimitate da ogni origine).<br/>
Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi è simile alla direttiva ''BandWidth''. Le connessioni eccedenti il limite riceveranno l'errore impostato in ''BandWidthError'' (di default è il 503).
Questa direttiva permette di impostare un numero massimo di connessioni provenienti da una determinata origine. La sintassi è simile alla direttiva <code>''BandWidth''</code>. Le connessioni eccedenti il limite riceveranno l'errore impostato in <code>''BandWidthError''</code> (di default è il 503).
{{ Warningbox | Affinchè il limite di connessioni per una data origine possa essere applicato, è necessario che quella origine abbia anche una limitazione di banda specificata con ''BandWidth''.<br/>
{{ Warningbox | Affinchè il limite di connessioni per una data origine possa essere applicato, è necessario che quella origine abbia anche una limitazione di banda specificata con <code>''BandWidth''</code>.<br/>
Quindi, se vogliamo limitare le connessioni provenienti da 192.168.2.0 con
Quindi, se vogliamo limitare le connessioni provenienti da 192.168.2.0 con
<pre>MaxConnection 192.168.2.0 20</pre>
<pre>MaxConnection 192.168.2.0 20</pre>
è fondamentale che il traffico con quella specifica rete sia indicato in
è fondamentale che il traffico con quella specifica rete sia indicato in
<pre>BandWidth 192.168.2.0 0</pre>
<pre>BandWidth 192.168.2.0 0</pre>
Come si può vedere, è una semplice questione di forma: infatti si può tranquillamente indicare come limite ''0'', quindi infinito. L'importante è che sia specificato in BandWidth.}}
Come si può vedere, è una semplice questione di forma: infatti si può tranquillamente indicare come limite <code>''0''</code>, quindi infinito. L'importante è che sia specificato in <code>BandWidth</code>.}}


==mod_bwshare==
==mod_bwshare==
1 508

contributi