Aide IBM HTTP Server - Directives Proxy

Directives Proxy

 

ProxyRequests

Permet d'autoriser Apache à fonctionner en tant que serveur proxy ou de l'en empêcher. L'attribution de la valeur "off" à ProxyRequests n'empêche pas l'utilisation de la directive ProxyPass.

ProxyRemote

Désigne à ce proxy d'autres proxys avec lesquels il est susceptible de coopérer. <masque-correspondance> est soit un masque d'URL pris en charge par le serveur distant, soit une URL partielle pour laquelle le serveur distant doit être utilisé. Vous pouvez également spécifier '*' pour indiquer que le serveur distant doit être contacté pour toutes les demandes. <serveur distant> est une URL partielle désignant le serveur distant. Syntaxe :
  <serveur-distant> = <protocole>://<nomhôte>[:port]
<protocole> est le protocole à utiliser pour communiquer avec le serveur distant. Seul "http" est accepté par ce module.

Exemple :

  ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
  ProxyRemote * http://cleversite.com
  ProxyRemote ftp http://ftpproxy.mydomain.com:8080
Dans le dernier exemple, le proxy transmettra les demandes FTP, encore encapsulées dans des demandes de proxy HTTP, à un autre proxy capable de les traiter.

ProxyPass

Cette directive permet de mapper plusieurs serveurs distants dans l'espace du serveur local. Ce dernier n'agit pas comme un proxy au sens conventionnel du terme, mais comme un miroir de ces serveurs distants. <chemin> est le nom d'un chemin virtuel local, tandis que <url> est l'URL partielle d'un serveur distant.

Supposons, par exemple, que l'adresse du serveur local soit http://wibble.org/ et que la directive ProxyPass suivante soit définie :

   ProxyPass         /mirror/foo/ http://foo.com/
La demande locale <http://wibble.org/mirror/foo/bar> sera alors convertie en interne en une demande de proxy <http://foo.com/bar>.

ProxyPassReverse

Cette directive permet à Apache d'ajuster l'URL dans l'en-tête Location des réponses HTTP redirigées. Il s'agit d'une possibilité essentielle en cas d'utilisation d'Apache comme proxy inverse. Elle évite que celui-ci ne soit contourné lorsque des redirections sont définies sur les serveurs placés dernière lui.

<chemin> est le nom d'un chemin virtuel local.
<url> est l'URL partielle d'un serveur distant. L'un et l'autre s'utilisent de la même manière que dans la directive ProxyPass.

Exemple :
Supposons, par exemple, que l'adresse du serveur local soit http://wibble.org/ et que les directives ProxyPass suivantes soit définies :

   ProxyPass         /mirror/foo/ http://foo.com/
   ProxyPassReverse  /mirror/foo/ http://foo.com/
Une demande locale <http://wibble.org/mirror/foo/bar> sera convertie en interne en une demande de proxy <http://foo.com/bar> (fonction assurée par ProxyPass). La directive ProxyPassReverse se chargera quant à elle des redirections envoyées par le serveur foo.com. Ainsi, en cas de redirection de http://foo.com/bar vers http://foo.com/quux, Apache insérera http://wibble.org/mirror/foo/quux dans l'en-tête Location de la réponse HTTP redirigée avant de l'envoyer au client.

La directive ProxyPassReverse peut aussi être utilisée conjointement avec la fonction passe-proxy ("RewriteRule ... [P]") à partir de mod_rewrite car elle ne dépend pas d'une directive ProxyPass correspondante.

AllowCONNECT

La directive AllowCONNECT spécifie une liste de numéros de port auxquels la méthode CONNECT du proxy peut se connecter. Les navigateurs actuels utilisent cette méthode lorsqu'une connexion https est demandée et que l'établissement de tunnels (tunneling) proxy sur http est en vigueur.
Initialement, seuls le port https par défaut (443) et le port snews par défaut (563) sont activés. Utilisez la directive AllowCONNECT pour supplanter ces valeurs par défaut et n'autoriser que les connexions aux ports désignés.

ProxyBlock

La directive ProxyBlock dresse une liste de mots, d'hôtes et/ou de domaines séparés les uns des autres par des espaces. Le proxy bloque toutes les demandes HTTP, HTTPS et FTP adressées aux sites dont les noms contiennent l'un des mots, hôtes ou domaines figurant dans cette liste. Au démarrage du serveur, le module proxy tente également de déterminer les adresses IP des différents éléments listés (puisque certains peuvent être des noms d'hôtes). S'il y parvient, il les mémorise afin qu'elles soient également prises en compte dans la comparaison. Exemple :
  ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
'rocky.wotsamattau.edu' serait également pris en compte s'il était référencé par l'adresse IP correspondante.

Notez que 'wotsamattau' serait également suffisant pour prendre en compte 'wotsamattau.edu'.

Notez enfin que

ProxyBlock *
a pour effet de bloquer les connexions à destination de tous les sites.

ProxyReceiveBufferSize

Destinée à accroître le débit, la directive ProxyReceiveBufferSize spécifie explicitement la taille de tampon réseau à allouer aux connexions HTTP et FTP sortantes. La valeur indiquée doit être supérieure à 512 ou égale à 0 pour que la taille de tampon par défaut du système soit utilisée.

Exemple :

  ProxyReceiveBufferSize 2048

NoProxy

Cette directive n'a d'utilité que pour les serveurs proxy Apache mis en oeuvre au sein d'intranets. Elle dresse une liste de sous-réseaux, d'adresses IP, d'hôtes et/ou de domaines séparés les uns des autres par des espaces. Une demande adressée à un hôte correspondant à un ou plusieurs des éléments listés est toujours satisfaite directement, sans transiter par le ou les serveurs proxy définis par la directive ProxyRemote.

Exemple :

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21
Les arguments de la directive NoProxy sont décrits ci-après :
domaine
L'argument domaine est un nom de domaine DNS partiellement qualifié, précédé d'un point. Il représente une liste d'hôtes qui, d'un point de vue logique, appartiennent tous au même domaine DNS ou à la même zone (autrement dit, les noms de ces hôtes se terminent tous par le suffixe domaine).
Exemples : .com    .apache.org.
Pour distinguer les domaines des noms d'hôtess (sur les plans syntaxique et sémantique, puisqu'un domaine DNS peut aussi faire l'objet d'un enregistrement par le service DNS), les domaines commencent systématiquement par un point.
Notez que la comparaison des noms de domaine s'effectue sans tenir compte de la casse des caractères et que les domaines sont toujours supposés être ancrés dans la racine de l'arborescence DNS. Par conséquent, les deux domaines .MonDomaine.com et .mondomaine.com. (notez le point à la fin) seront considérés comme équivalents. Comme la comparaison des noms de domaine n'implique pas de recherche DNS, elle est bien plus efficace que la comparaison à un sous-réseau.
sous-réseau
L'argument sous-réseau est une adresse Internet partiellement qualifiée, présentée sous forme numérique (notation à points) et éventuellement suivie d'une barre oblique et du masque de sous-réseau (ce dernier exprimant alors le nombre de bits significatifs dans le sous-réseau). Il sert à représenter un sous-réseau d'hôtes qui peuvent être joints à travers une interface de réseau commune. En l'absence de masque de sous-réseau explicite, celui-ci est défini par les dernières valeurs omises (ou égales à zéro). (Dans ce cas, la largeur du masque, en nombre de bits, ne peut être qu'un multiple de 8).
Exemples :
192.168 ou 192.168.0.0
Désigne le sous-réseau 192.168.0.0 avec un masque implicite de 16 bits valides (ce masque étant parfois exprimé sous la forme 255.255.0.0).
192.168.112.0/21
Désigne le sous-réseau 192.168.112.0/21 avec un masque explicite de 21 bits valides (également présenté sous la forme 255.255.248.0).
Si l'on considère les cas extrêmes, un sous-réseau avec 32 bits valides est équivalent à une adresseIP (voir plus bas), tandis qu'un sous-réseau avec zéro bit valide (par exemple, 0.0.0.0/0) équivaut à la constante _Default_, c'est-à-dire l'acceptation de toute adresse IP.
adresseIP
L'argument adresseIP est une adresse Internet entièrement qualifiée, présentée au format numérique à points. Généralement, cette adresse représente un hôte, mais il n'est pas obligatoire qu'un nom de domaine DNS y soit rattaché.
Exemple : 192.168.123.7
Remarque : Une adresseIP n'a pas besoin d'être résolue par le service DNS. Son usage peut donc s'avérer bénéfique pour les performances d'Apache.

Voir aussi : DNS Issues (document en anglais).

nomhôte
L'argument nomhôte est un nom de domaine DNS entièrement qualifié qui peut être résolu en une ou plusieurs adresse(s)IP par le service DNS. Il représente un hôte logique (par opposition aux domaines décrits plus haut) et sa résolution doit donner au moins une adresseIP (le plus souvent, il s'agit d'une liste d'hôtes ayant chacun une adresseIP différente).
Exemples : prep.ai.mit.edu    www.apache.org.
Remarque : Dans de nombreux cas, il est plus efficace de spécifier une adresseIP à la place d'un nomhôte, car on évite alors une recherche via le service DNS. La résolution des noms dans Apache peut prendre un temps considérable si la connexion au serveur de noms emprunte une liaison PPP lente.
Notez que la comparaison des noms d'hôtes s'effectue sans tenir compte de la casse des caractères et qu'un nomhôte est toujours supposé être ancré dans la racine de l'arborescence DNS. Par conséquent, les deux hôtes WWW.MonDomaine.com et www.mondomaine.com. (notez le point à la fin) sont considérés comme équivalents.

Voir aussi : DNS Issues (document en anglais).

ProxyDomain

Cette directive n'a d'utilité que pour les serveurs proxy Apache mis en oeuvre au sein d'intranets. ProxyDomain spécifie le domaine par défaut auquel le serveur proxy Apache appartiendra. Si une demande destinée à un hôte est reçue sans indication du nom de domaine, une réponse de redirection vers cet hôte sera générée et le nom de domaine qu'elle contiendra alors sera celui qui est spécifié par ProxyDomain.

Exemple :

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

ProxyVia

Cette directive contrôle l'usage de l'en-tête HTTP Via: par le proxy. Elle a pour but de contrôler le flux des demandes acheminées le long d'une chaîne de plusieurs serveurs proxy. Pour une description des lignes d'en-tête Via:, consultez le document RFC2068 (HTTP/1.1).

CacheForceCompletion

Si un transfert HTTP est annulé pendant sa mise en cache, le module proxy achève quand même son transfert dans la cache si la proportion de données déjà transférées est supérieure au pourcentage spécifié ici.

S'agissant d'un pourcentage, la valeur indiquée doit être comprise entre 1 et 100 (ou égale à 0 pour que la valeur par défaut soit utilisée). Avec la valeur 100, aucune tolérance n'est accordée et toute annulation d'un transfert HTTP interrompt immédiatement la mise en cache du document correspondant si celle ci n'est pas complètement terminée. Il est conseillé d'indiquer une valeur comprise entre 60 et 90.

CacheRoot

Définit le nom du répertoire destiné à contenir les fichiers de données de la cache. Le serveur httpd doit disposer d'un droit d'accès en écriture sur ce répertoire. (Voir la directive User).
La définition de CacheRoot permet d'activer la mise en cache par le proxy. Sans cette définition, la fonctionnalité de proxy est néanmoins disponible (à condition que ProxyRequests ait la valeur On), mais il n'y a pas de mise en cache des demandes.

CacheSize

Définit l'espace alloué initialement à la cache, en kilo-octets (unités de 1024 octets). La cache peut bien entendu s'étendre sur un espace supérieur à la valeur indiquée ici. Cependant, le processus de récupération de place continuera à supprimer les fichiers jugés obsolètes tant que l'espace utilisé par la cache ne sera pas redescendu à cette valeur ou en dessous.

En fonction du volume de trafic attendu sur le proxy et de la valeur attribuée à CacheGcInterval, indiquez une valeur qui est au moins 20 à 40 % inférieure à l'espace disponible.

CacheGcInterval

La cache est contrôlée toutes les <n> heures et le processus de récupération de place (suppression des fichiers périmés) entre en action si l'espace occupé est supérieur à la limite fixée par CacheSize. Notez que <n> peut être une valeur décimale. Ainsi, vous pouvez spécifier CacheGcInterval 1.5 pour contrôler la cache toutes les 90 minutes. (Si cet intervalle n'est pas défini, aucune récupération de place ne sera mise en oeuvre et la cache grossira indéfiniment). Notez également que plus la valeur de CacheGcInterval est élevée, plus les récupérations de place seront espacées et plus il faudra d'espace supplémentaire par rapport à la limite fixée par CacheSize.

CacheMaxExpire

Les documents HTTP stockés en cache pourront être conservés pendant <n> heures sans que leur serveur d'origine soit consulté. La péremption des documents sera donc au maximum de <n> heures. Cette règle est mise en pratique même si les documents sont accompagnés d'une date d'expiration.

CacheLastModifiedFactor

Si le serveur HTTP d'origine ne fournit pas de date d'expiration pour un document, la formule suivante est appliquée pour déterminer au bout de combien de temps le document est jugé périmé :

  délai d'expiration = durée écoulée depuis dernière modification x <facteur>
Par exemple, si la dernière modification d'un document remonte à 10 heures et que le facteur choisi est 0,1, alors le délai d'expiration de ce document sera 10 x 0,1 = 1 heure.

Si le délai d'expiration ainsi calculé est plus long que la durée de rétention fixée par CacheMaxExpire, c'est cette dernière qui l'emporte.

CacheDirLevels

CacheDirLevels définit le nombre de niveaux de sous-répertoires dans la cache. Les données mises en cache seront sauvegardées dans des sous-répertoires situés au nombre de niveaux indiqués par rapport à l'emplacement racine spécifié par CacheRoot.

CacheDirLength

CacheDirLength définit le nombre de caractères composant les noms des sous-répertoires de la cache du proxy.

CacheDefaultExpire

Si un document est obtenu via un protocole qui ne fournit pas l'heure dernière modification, le délai d'expiration de ce document sera de <n> heures. Ce paramètre n'est pas supplanté par CacheMaxExpire.

NoCache

La directive NoCache dresse une liste de mots, d'hôtes et/ou de domaines séparés les uns des autres par des espaces. Les documents HTTP ainsi que les documents FTP non protégés par mot de passe issus d'emplacements correspondant aux mots, hôtes ou domaines listés ici ne seront pas mis en cache par le serveur proxy. Au démarrage du serveur, le module proxy tente également de déterminer les adresses IP des différents éléments listés (puisque certains peuvent être des noms d'hôtes). S'il y parvient, il les mémorise afin qu'elles soient également prises en compte dans la comparaison. Exemple :

  NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
'bullwinkle.wotsamattau.edu' serait également pris en compte s'il était référencé par l'adresse IP correspondante.

Notez que 'wotsamattau' serait également suffisant pour prendre en compte 'wotsamattau.edu'.

Notez enfin que

NoCache *
désactive complètement la mise en cache.