Guida di IBM HTTP Server: Direttive Proxy

Direttive Proxy

 

ProxyRequests

Questo consente o impedisce ad Apache di operare come server proxy. Impostando ProxyRequests su 'off' non si disabilita l'utilizzo della direttiva ProxyPass.

ProxyRemote

Questo definisce i proxy remoti su questo proxy. <match> è il nome di uno schema URL che il server remoto supporto, oppure un URL parziale per il quale il server remoto deve essere utilizzato, oppure '*' per indicare che il server deve essere contattato per tutte le richieste. <remote-server> è un URL parziale per il server remoto. Sintassi:
  <remote-server> = <protocol>://<hostname>[:port]
<protocol> è il protocollo che deve essere utilizzato per comunicare con il server remoto; solo "http" è supportato da questo modulo.

Esempio:

  ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
  ProxyRemote * http://cleversite.com
  ProxyRemote ftp http://ftpproxy.mydomain.com:8080
Nell'ultimo esempio, il proxy inoltrerà le richieste FTP, incapsulate come anche un'altra richiesta proxy HTTP, ad un altro proxy che può gestirle.

ProxyPass

Questa direttiva consente ai server remoti di essere definiti nello spazio del server locale; il server locale non opera come proxy nel senso convenzionale, ma appare come uno specchio del server remoto. <path> è il nome di un percorso virtuale locale; <url> è un URL parziale per il server remoto.

Si supponga che il server locale abbia l'indirizzo http://wibble.org/; quindi

   ProxyPass /mirror/foo/ http://foo.com/
farà sì che una richiesta locale per <http://wibble.org/mirror/foo/bar> venga convertito in modo interno in una richiesta proxy in <http://foo.com/bar>.

ProxyPassReverse

Questa direttiva lascia che l'Apache regoli l'URL nell'intestazione Location nelle risposte HTTP reindirizzate. Ad esempio, ciò è fondamentale quando si utilizza l'Apache come proxy inverso per evitare di saltare il proxy inverso a causa dei reindirizzamenti HTTP nei server back end che risiedono dietro il proxy inverso.

<Path> è il nome del percorso virtuale locale.
<url> è un URL parziale per il server remoto - lo stesso modo in cui sono utilizzati per la direttiva ProxyPass.

Esempio:
Si supponga che il server locale abbia l'indirizzo http://wibble.org/; quindi

   ProxyPass /mirror/foo/ http://foo.com/
   ProxyPassReverse  /mirror/foo/ http://foo.com/
non solo farà sì una richiesta locale per <http://wibble.org/mirror/foo/bar> venga convertita internamente in una richiesta proxy in <http://foo.com/bar> (la funzione ProxyPass qui fornita). Interessa anche i reindirizzamenti che il server foo.com invia: quando http://foo.com/bar viene reindirizzato da esso in http://foo.com/quux Apache regola questo in http://wibble.org/mirror/foo/quux prima di inoltrare la risposta di reindirizzamento HTTP al client.

Notare che questa direttiva ProxyPassReverse può essere utilizzata anche insieme alla funzione pass-through del proxy ("RewriteRule ... [P]") da mod_rewrite in quanto non dipende da una direttiva ProxyPass corrispondente.

AllowCONNECT

La direttiva AllowCONNECT specifica un elenco di numeri di porte alle quali il metodo CONNECT del proxy può connettersi. I browser attuali utilizzano questo metodo quando si richiede una connessione https e quando è in funzione il collegamento proxy tramite http.
Per default, sono abilitate solamente la porta https di default (443) e la porta snews di default (563). Utilizzare la direttiva AllowCONNECT per sovrascrivere questo valore di default e per abilitare le connessioni solo con le porte elencate.

ProxyBlock

La direttiva ProxyBlock specifica un elenco di parole, host e/o domini, separati da spazi. Le richieste di documenti HTTP, HTTPS, e FTP verso siti i cui nomi contengono parole, host o domini con corrispondenze sono bloccate dal server proxy. Il modulo proxy tenterà inoltre di stabilire gli indirizzi IP delle voci dell'elenco che possono essere nomi host durante l'avvio e li memorizza nelle cache per una verifica di corrispondenza. Esempio:
  ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
'rocky.wotsamattau.edu' viene messo in corrispondenza se accompagnato da un indirizzo IP.

Notare che 'wotsamattau' è sufficiente per avere la corrispondenza 'wotsamattau.edu'.

Notare inoltre che

ProxyBlock *
blocca i collegamenti a tutti i siti.

ProxyReceiveBufferSize

La direttiva ProxyReceiveBufferSize specifica una dimensione buffer di rete chiara per le connessioni HTTP e FTP in uscita, per la velocità di trasmissione aumentata. Deve essere maggiore di 512 o impostata su 0 per indicare che è necessario utilizzare la dimensione buffer di default del sistema.

Esempio:

  ProxyReceiveBufferSize 2048

NoProxy

Questa direttiva è utile solamente per i server proxy Apache all'interno delle intranet. La direttiva NoProxy specifica un elenco di sottoreti, di indirizzi IP di host e/o di domini, separati da spazi. Una richiesta ad un host che corrisponde ad uno o più di questi viene sempre servita direttamente, senza essere inoltrata al (ai) server proxy ProxyRemote configurato(i).

Esempio:

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21 
Gli argomenti per la direttiva NoProxy è contenuto nel seguente elenco:
Domain
Un Domain è un nome di dominio DNS parzialmente qualificato, preceduto da un punto. Rappresenta un elenco di host che appartengono logicamente alla stessa area o dominio DNS (i.e., i suffissi dei nomi host sono tutti terminali nel Domain).
Esempi: .com .apache.org.
Per distinguere i Domain dagli Hostname (entrambi sintatticamente e semanticamente; un dominio DNS può avere un DNS e anche un record!), i Domini sono sempre scritti con un punto iniziale.
Nota: I confronti con il nome di dominio vengono sempre effettuati senza considerare il maiuscolo e minuscolo, e i Domain sono sempre considerati come legati nella root dell'albero DNS, tuttavia i due domini .MyDomain.com e .mydomain.com. (notare il punto finale) vengono considerati uguali. Poiché il confronto dei domini non coinvolge un lookup del DNS, si rivela molto più efficace del confronto della sottorete.
SubNet
Una SubNet è un indirizzo Internet non completo espresso in forma numerica (quattro gruppi divisi da punti), seguito facoltativamente da una barra e dalla maschera di rete, specificato come il numero di bit importanti nella SubNet. Viene utilizzata per rappresentare una sottorete di host che può essere raggiunta tramite un'interfaccia di rete comune. In assenza della maschera di rete esplicita si presuppone che le cifre finali omesse (o di valore zero) specifichino la maschera. (In questo caso, la sottomaschera può essere composta solo da multipli di 8 bit.)
Esempi:
192.168 o 192.168.0.0
la sottorete 192.168.0.0 con una sottomaschera implicita di 16 bit validi (a volte utilizzati nel modulo della maschera di rete 255.255.0.0)
192.168.112.0/21
la sottorete 192.168.112.0/21 con una maschera di rete di 21 bit validi (utilizzati anche nel modulo 255.255.248.0)
Come caso degenere, una SubNet con 32 bit validi equivale ad un IPAddr, mentre una SubNet con zero bit validi (e.g., 0.0.0.0/0) equivale alla costante _Default_, corrispondente ad ogni indirizzo IP.
IPAddr
Un IPAddr rappresenta un indirizzo Internet completo espresso in modalità numerica (quattro gruppi separati da punti). Generalmente, questo indirizzo rappresenta un host, ma non è necessario che un nome di dominio DNS sia collegato all'indirizzo.
Esempio: 192.168.123.7
Nota: Un IPAddr non deve essere risolto dal sistema DNS, in tal modo le prestazioni apache saranno migliori.

Consultare anche: Emissioni DNS

Hostname
Un Hostname è un nome di dominio DNS qualificato per esteso che può essere risolto su uno o più IPAddrs attraverso il servizio del nome di dominio DNS. Rappresenta un host logico (in contrasto con i Domain, consultare sopra) e deve essere risolvibile su almeno un IPAddr (o spesso su un elenco di host con diversi IPAddr).
Esempi: prep.ai.mit.edu www.apache.org.
Nota: In molte situazioni, è meglio specificare un IPAddr invece di Hostname in quanto è possibile evitare il lookup DNS. La risoluzione dei nomi in Apache può impiegare una notevole quantità di tempo quando la connessione al server dei nomi utilizza un link PPP lento.
Nota: I confronti Hostname vengono fatti senza considerare il maiuscolo e minuscolo e si presuppone sempre che gli Hostname siano ancorati nella root dell'albero DNS, tuttavia due host WWW.MyDomain.com e www.mydomain.com. (notare il punto finale) vengono considerati uguali.

Consultare anche: Emissioni DNS

ProxyDomain

Questa direttiva è utile solamente per i server proxy Apache all'interno delle intranet. La direttiva ProxyDomain specifica il dominio di default al quale il server proxy apache apparterrà. Se si incontra una richiesta ad un host senza un nome di dominio, verrà creata una risposta di reindirizzamento verso lo stesso host con il Domain configurato accodato.

Esempio:

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21 
  ProxyDomain     .mycompany.com

ProxyVia

Questa direttiva controlla l'utilizzo dell'intestazione HTTP Via: attraverso il proxy. Deve essere utilizzato per controllare il flusso delle richieste proxy lungo una catena di server proxy. Consultare RFC2068 (HTTP/1.1) per una spiegazione delle righe di intestazione Via:

CacheForceCompletion

Se un trasferimento http memorizzato nella cache viene annullato, il modulo proxy completerà il trasferimento verso la cache se è stata trasferita una percentuale maggiore di quella specificata.

Questa è una percentuale, e deve essere un numero compreso tra 1 e 100 o 0 per utilizzare il valore di default. 100 farà in modo che un documento venga memorizzato nella cache solo se al trasferimento era stato permesso di completarsi. Si consiglia un numero compreso tra 60 e 90.

CacheRoot

Imposta il nome della directory che deve contenere i file di cache; questa deve essere scrivibile dal server httpd. (Consultare la direttiva User).
L'impostazione di CacheRoot consente la memorizzazione cache del proxy; senza la definizione di una CacheRoot, la funzionalità proxy sarà disponibile se le ProxyRequests sono impostate su On, ma non sarà disponibile nessuna memorizzazione cache.

CacheSize

Imposta l'utilizzo dello spazio desiderato della cache, in KB (unità di 1024 byte). Sebbene l'utilizzo possa aumentare questa impostazione, la raccolta di dati inutili cancellerà i file fino a quando l'utilizzo non è allo stesso livello o sotto tale impostazione.

A seconda del volume di traffico del proxy previsto e di CacheGcInterval, utilizzare un valore che sia inferiore dal 20 al 40 % rispetto allo spazio disponibile.

CacheGcInterval

Verificare la cache ogni <time> ore e cancellare i file se l'utilizzo dello spazio è maggiore di quello impostato da CacheSize. Notare che <time> accetta un valore variabile, è possibile ad esempio utilizzare CacheGcInterval 1.5 per verificare la cache ogni 90 minuti. (Se non impostato, non verrà eseguita alcuna raccolta dei dati inutili e la cache aumenterà indefinitamente.) Notare inoltre che più grande è CacheGcInterval, e maggiore sarà lo spazio necessario, oltre la CacheSize configurata, per la cache tra le raccolte di dati inutili.

CacheMaxExpire

I documenti HTTP che possono essere memorizzati nella cache saranno trattenuti per al massimo <time> ore senza verificare il server origine. Così i documenti possono essere vecchi al massimo di <time> ore. Questa limitazione viene rafforzata anche se è stata fornita una data di scadenza insieme al documento.

CacheLastModifiedFactor

Se il server HTTP di origine non ha fornito una data di scadenza per il documento, è necessario stabilirne uno utilizzando la formula

  expiry-period = time-since-last-modification * <factor>
Ad esempio, se il documento è stato modificato 10 ore fa, e <factor> è 0.1, il periodo di scadenza sarà impostato su 10*0.1 = 1 ora.

Se il periodo di scadenza sarà superiore a quello impostato da CacheMaxExpire, l'ultimo periodo impostato ha la precedenza.

CacheDirLevels

CacheDirLevels imposta il numero di livelli delle sottodirectory nella cache. I dati memorizzati verranno salvati in più livelli di directory sotto CacheRoot.

CacheDirLength

CacheDirLength imposta il numero di caratteri nei nomi delle sottodirectory della cache del proxy.

CacheDefaultExpire

Se il documento viene sottoposto a fetch tramite un protocollo che non supporta le date di scadenza, utilizzare <time> ore come periodo di scadenza. CacheMaxExpire non sovrascrive questa impostazione.

NoCache

La direttiva NoCache specifica un elenco di parole, host e/o domini separati da spazi. I documenti HTTP e FTP senza password provenienti da parole, host o domini messi in corrispondenza non sono memorizzati nella cache dal server proxy. Il modulo proxy tenterà inoltre di stabilire gli indirizzi IP delle voci dell'elenco che possono essere nomi host durante l'avvio e li memorizza nelle cache per una verifica di corrispondenza. Esempio:

  NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
'bullwinkle.wotsamattau.edu' viene messo in corrispondenza se indicato con un indirizzo IP.

Notare che 'wotsamattau' è sufficiente per avere la corrispondenza 'wotsamattau.edu'.

Notare inoltre che

NoCache *
disabilita la funzione di cache in modo completo.