Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/manual/fr/mod/mod_proxy.html
Äàòà èçìåíåíèÿ: Mon Jan 21 19:44:30 2013
Äàòà èíäåêñèðîâàíèÿ: Fri Feb 28 05:57:46 2014
Êîäèðîâêà: koi8-r

Ïîèñêîâûå ñëîâà: http astrokuban.info astrokuban
mod_proxy - Serveur Apache <b style="color:black;background-color:#ffff66">HTTP</b>
<-
Apache > Serveur HTTP > Documentation > Version 2.2 > Modules

Module Apache mod_proxy

Langues Disponibles:  en  |  fr  |  ja 

Cette traduction peut Étre pÈrimÈe. VÈrifiez la version anglaise pour les changements rÈcents.
Description:Serveur mandataire/passerelle HTTP/1.1
Statut:Extension
Identificateur de Module:proxy_module
Fichier Source:mod_proxy.c

Sommaire

Avertissement

N'activez pas la fonctionnalitÈ de mandataire avec la directive ProxyRequests avant d'avoir sÈcurisÈ votre serveur. Les serveurs mandataires ouverts sont dangereux pour votre rÈseau, mais aussi pour l'Internet au sens large.

Ce module implÈmente un mandataire/passerelle pour Apache. Il implÈmente la fonctionnalitÈ de mandataire pour AJP13 (Apache JServe Protocol version 1.3), FTP, CONNECT (pour SSL), HTTP/0.9, HTTP/1.0, et HTTP/1.1. Le module peut Étre configurÈ pour se connecter aux autres modules mandataires qui gÕrent ces protocoles.

Les diverses fonctionnalitÈs de mandataire d'Apache sont rÈparties entre plusieurs modules complÈmentaires de mod_proxy : mod_proxy_http, mod_proxy_ftp, mod_proxy_ajp, mod_proxy_balancer, et mod_proxy_connect. Ainsi, si vous voulez utiliser une ou plusieurs fonctionnalitÈs de mandataire particuliÕres, chargez mod_proxy et le(s) module(s) appropriÈ(s) dans le serveur (soit statiquement Þ la compilation, soit dynamiquement via la directive LoadModule).

En outre, d'autres modules fournissent des fonctionnalitÈs Ètendues. mod_cache et ses modules associÈs fournissent la mise en cache. Les directives SSLProxy* du module mod_ssl permettent de contacter des serveurs distants en utilisant le protocole SSL/TLS. Ces modules additionnels devront Étre chargÈs et configurÈs pour pouvoir disposer de ces fonctionnalitÈs.

Directives

Sujets

Voir aussi

top

Mandataires directs et mandataires/passerelles inverses

Apache peut Étre configurÈ dans les deux modes mandataire direct et mandataire inverse (aussi nommÈ mode passerelle).

Un mandataire direct standard est un serveur intermÈdiaire qui s'intercale entre le client et le serveur demandÈ. Pour obtenir un contenu hÈbergÈ par le serveur demandÈ, le client envoie une requÉte au mandataire en nommant le serveur demandÈ comme cible, puis le mandataire extrait le contenu depuis le serveur demandÈ et le renvoie enfin au client. Le client doit Étre configurÈ de maniÕre appropriÈe pour pouvoir utiliser le mandataire direct afin d'accÈder Þ d'autres sites.

L'accÕs Þ Internet depuis des clients situÈs derriÕre un pare-feu est une utilisation typique du mandataire direct. Le mandataire direct peut aussi utiliser la mise en cache (fournie par mod_cache) pour rÈduire la charge du rÈseau.

La fonctionnalitÈ de mandataire direct est activÈe via la directive ProxyRequests. Comme les mandataires directs permettent aux clients d'accÈder Þ des sites quelconques via votre serveur et de dissimuler leur vÈritable origine, il est indispensable de sÈcuriser votre serveur de faÃon Þ ce que seuls les clients autorisÈs puissent accÈder Þ votre serveur avant d'activer la fonctionnalitÈ de mandataire direct.

Un mandataire inverse (ou passerelle), quant Þ lui, apparaÍt au client comme un serveur web standard. Aucune configuration particuliÕre du client n'est nÈcessaire. Le client adresse ses demandes de contenus ordinaires dans l'espace de nommage du mandataire inverse. Ce dernier dÈcide alors oÛ envoyer ces requÉtes, et renvoie le contenu au client comme s'il l'hÈbergeait lui-mÉme.

L'accÕs des utilisateurs Þ Internet pour un serveur situÈ derriÕre un pare-feu est une utilisation typique du mandataire inverse. On peut aussi utiliser les mandataires inverses pour mettre en oeuvre une rÈpartition de charge entre plusieurs serveurs en arriÕre-plan, ou fournir un cache pour un serveur d'arriÕre-plan plus lent. Les mandataires inverses peuvent aussi tout simplement servir Þ rassembler plusieurs serveurs dans le mÉme espace de nommage d'URLs.

La fonctionnalitÈ de mandataire inverse est activÈe via la directive ProxyPass ou le drapeau [P] de la directive RewriteRule. Il n'est pas nÈcessaire de dÈfinir ProxyRequests Þ on pour configurer un mandataire inverse.

top

Exemples simples

Les exemples ci-dessous illustrent de maniÕre trÕs basique la mise en oeuvre de la fonctionnalitÈ de mandataire et ne sont lÞ que pour vous aider Þ dÈmarrer. Reportez-vous Þ la documentation de chaque directive.

Si en outre, vous dÈsirez activer la mise en cache, consultez la documentation de mod_cache.

Mandataire inverse

ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar

Mandataire direct

ProxyRequests On
ProxyVia On

<Proxy *>
Order deny,allow
Deny from all
Allow from interne.example.com
</Proxy>

top

Gestionnaires de serveurs (workers)

Le mandataire gÕre la configuration des serveurs originaux, ainsi que leurs paramÕtres de communication dans des objets appelÈs workers ou Gestionnaires de serveur. Deux workers intÈgrÈs par dÈfaut sont disponibles : le worker de mandataire direct et le worker de mandataire inverse. Des workers supplÈmentaires peuvent Étre configurÈs explicitement.

Les deux workers par dÈfaut ont une configuration fixe et seront utilisÈs si aucun autre worker ne correspond Þ la requÉte. Ils n'utilisent ni les connexions HTTP persistantes, ni les jeux de connexions. Les connexions TCP vers le serveur original seront donc ouvertes et fermÈes pour chaque requÉte.

Les workers configurÈs explicitement sont identifiÈs par leur URL. Dans le cas d'un mandataire inverse, ils sont gÈnÈralement crÈÈs et configurÈs via les directives ProxyPass ou ProxyPassMatch :

ProxyPass /example http://backend.example.com connectiontimeout=5 timeout=30

Cet exemple crÈe un worker associÈ Þ l'URL du serveur original http://backend.example.com, et utilisant les dÈlais spÈcifiÈs. Dans le cas d'un mandataire direct, les workers sont gÈnÈralement dÈfinis via la directive ProxySet directive :

ProxySet http://backend.example.com connectiontimeout=5 timeout=30

ou encore via une combinaison des directives Proxy et ProxySet :

<Proxy http://backend.example.com>
ProxySet connectiontimeout=5 timeout=30 </Proxy>

L'utilisation de workers configurÈs explicitement dans le mode direct n'est pas trÕs courante, car les mandataires directs communiquent avec de nombreux serveurs originaux. Il est cependant intÈressant de crÈer des workers explicites pour certains serveurs originaux si ces derniers sont utilisÈs trÕs souvent. Les workers configurÈs explicitement n'ont en eux-mÉmes aucun concept de mandataire direct ou inverse. Ils encapsulent un concept de communication commun avec les serveurs originaux. Un worker crÈÈ via la directive ProxyPass pour Étre utilisÈ avec un mandataire inverse, sera aussi utilisÈ pour les requÉtes mandatÈes en direct chaque fois que l'URL du serveur original correspondra Þ l'URL du worker, et vice versa.

L'URL identifiant un worker direct correspond Þ l'URL de son serveur original comportant tout ÈlÈment de chemin Èventuel :

ProxyPass /examples http://backend.example.com/examples
ProxyPass /docs http://backend.example.com/docs

Cet exemple dÈfinit deux workers diffÈrents, chacun d'entre eux utilisant une configuration et un jeu de connexions sÈparÈs.

Partage de worker

Le partage de worker se produit lorsque les URLs des workers se chevauchent, c'est Þ dire lorsque l'URL d'un worker correspond Þ une partie du dÈbut de l'URL d'un autre worker dÈfini plus loin dans le fichier de configuration. Dans l'exemple suivant,

ProxyPass /apps http://backend.example.com/ timeout=60
ProxyPass /examples http://backend.example.com/examples timeout=10

le second worker n'est pas vraiment crÈÈ. C'est le premier worker qui est utilisÈ Þ sa place. L'avantage de ceci rÈside dans le fait qu'il n'y a plus qu'un jeu de connexions, celles-ci Ètant donc rÈutilisÈes plus souvent. Notez que tous les attributs de configuration dÈfinis explicitement pour le second worker et certaines valeurs par dÈfaut vont Ècraser la configuration dÈfinie pour le premier worker, ce qui va provoquer la journalisation d'un avertissement. Dans l'exemple prÈcÈdent, la valeur de dÈlai finale pour l'URL /apps sera 10 au lieu de 60 !

Pour Èviter ce partage, classez vos dÈfinitions de workers de l'URL la plus longue Þ la plus courte. Si au contraire, vous voulez favoriser ce partage, utilisez l'ordre de classement inverse. Voir aussi l'avertissement en rapport Þ propos de l'ordre de classement des directives ProxyPass.

Les workers configurÈs explicitement sont de deux sortes : workers directs et workers Þ rÈpartition (de charge). Ils supportent de nombreux attributs de configuration importants dÈcrits ci-dessous dans la directive ProxyPass. Tous ces attributs peuvent aussi Étre dÈfinis via la directive ProxySet.

Le jeu d'options disponibles pour un worker direct dÈpend du protocole, qui est spÈcifiÈ dans l'URL du serveur original. Parmi les protocoles disponibles, on trouve ajp, ftp, http et scgi.

Les workers Þ rÈpartition sont des workers virtuels qui utilisent des workers directs considÈrÈs comme leurs membres pour le traitement effectif des requÉtes. Chaque rÈpartiteur peut possÈder plusieurs membres. Pour traiter une requÉte, il choisit un de ses membres en fonction de l'algorithme de rÈpartition de charge dÈfini.

Un worker Þ rÈpartition est crÈÈ si son URL utilise balancer comme protocole. L'URL de rÈpartition identifie de maniÕre unique le worker Þ rÈpartition. On peut ajouter des membres Þ un rÈpartiteur via la directive BalancerMember.

top

ContrÒler l'accÕs Þ votre mandataire

Vous pouvez restreindre l'accÕs Þ votre mandataire via le bloc de contrÒle <Proxy> comme dans l'exemple suivant :

<Proxy *>
Order Deny,Allow
Deny from all
Allow from 192.168.0
</Proxy>

Pour plus de dÈtails sur les directives de contrÒle d'accÕs, voir la documentation du module mod_authz_host.

Restreindre l'accÕs de maniÕre stricte est essentiel si vous mettez en oeuvre un mandataire direct (en dÈfinissant la directive ProxyRequests Þ "on"). Dans le cas contraire, votre serveur pourrait Étre utilisÈ par n'importe quel client pour accÈder Þ des serveurs quelconques, tout en masquant sa vÈritable identitÈ. Ceci reprÈsente un danger non seulement pour votre rÈseau, mais aussi pour l'Internet au sens large. Dans le cas de la mise en oeuvre d'un mandataire inverse (en dÈfinissant la directive ProxyPass Þ "off"), le contrÒle d'accÕs est moins critique car les clients ne peuvent contacter que les serveurs que vous avez spÈcifiÈs.

top

Ralentissement au dÈmarragep

Si vous utilisez la directive ProxyBlock, les noms d'hÒtes sont rÈsolus en adresses IP puis ces derniÕres mises en cache au cours du dÈmarrage Þ des fins de tests de comparaisons ultÈrieurs. Ce processus peut durer plusieurs secondes (ou d'avantage) en fonction de la vitesse Þ laquelle s'effectue la rÈsolution des noms d'hÒtes.

top

Mandataire d'Intranet

Un serveur mandataire Apache situÈ Þ l'intÈrieur d'un Intranet doit faire suivre les requÉtes destinÈes Þ un serveur externe Þ travers le pare-feu de l'entreprise (pour ce faire, dÈfinissez la directive ProxyRemote de faÃon Þ ce qu'elle fasse suivre le protocole concernÈ vers le mandataire du pare-feu). Cependant, lorsqu'il doit accÈder Þ des ressources situÈes dans l'Intranet, il peut se passer du pare-feu pour accÈder aux serveurs. A cet effet, la directive NoProxy permet de spÈcifier quels hÒtes appartiennent Þ l'Intranet et peuvent donc Étre accÈdÈs directement.

Les utilisateurs d'un Intranet ont tendance Þ oublier le nom du domaine local dans leurs requÉtes WWW, et demandent par exemple "http://un-serveur/" au lieu de http://un-serveur.example.com/. Certains serveurs mandataires commerciaux acceptent ce genre de requÉte et les traitent simplement en utilisant un nom de domaine local implicite. Lorsque la directive ProxyDomain est utilisÈe et si le serveur est configurÈ comme mandataire, Apache peut renvoyer une rÈponse de redirection et ainsi fournir au client l'adresse de serveur correcte, entiÕrement qualifiÈe. C'est la mÈthode Þ privilÈgier car le fichier des marque-pages de l'utilisateur contiendra alors des noms de serveurs entiÕrement qualifiÈs.

top

Ajustements relatifs au protocole

Pour les cas oÛ mod_proxy envoie des requÉtes vers un serveur qui n'implÈmente pas correctement les connexions persistantes ou le protocole HTTP/1.1, il existe deux variables d'environnement qui permettent de forcer les requÉtes Þ utiliser le protocole HTTP/1.0 avec connexions non persistantes. Elles peuvent Étre dÈfinies via la directive SetEnv.

Il s'agit des variables force-proxy-request-1.0 et proxy-nokeepalive.

<Location /serveur-non-conforme/>
ProxyPass http://serveur-non-conforme:7001/foo/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>

top

Corps de requÉtes

Certaines mÈthodes de requÉtes comme POST comportent un corps de requÉte. Le protocole HTTP stipule que les requÉtes qui comportent un corps doivent soit utiliser un codage de transmission fractionnÈe, soit envoyer un en-tÉte de requÉte Content-Length. Lorsqu'il fait suivre ce genre de requÉte vers le serveur demandÈ, mod_proxy_http s'efforce toujours d'envoyer l'en-tÉte Content-Length. Par contre, si la taille du corps est importante, et si la requÉte originale utilise un codage Þ fractionnement, ce dernier peut aussi Étre utilisÈ dans la requÉte montante. Ce comportement peut Étre contrÒlÈ Þ l'aide de variables d'environnement. Ainsi, si elle est dÈfinie, la variable proxy-sendcl assure une compatibilitÈ maximale avec les serveurs demandÈs en imposant l'envoi de l'en-tÉte Content-Length, alors que proxy-sendchunked diminue la consommation de ressources en imposant l'utilisation d'un codage Þ fractionnement.

top

En-tÉtes de requÉte du mandataire inverse

Lorsqu'il est configurÈ en mode mandataire inverse (en utilisant par exemple la directive ProxyPass), mod_proxy_http ajoute plusieurs en-tÉtes de requÉte afin de transmettre des informations au serveur demandÈ. Ces en-tÉtes sont les suivants :

X-Forwarded-For
L'adresse IP du client.
X-Forwarded-Host
L'hÒte d'origine demandÈ par le client dans l'en-tÉte de requÉte HTTP Host.
X-Forwarded-Server
Le nom d'hÒte du serveur mandataire.

Ces en-tÉtes doivent Étre utilisÈs avec prÈcautions sur le serveur demandÈ, car ils contiendront plus d'une valeur (sÈparÈes par des virgules) si la requÉte original contenait dÈjÞ un de ces en-tÉtes. Par exemple, vous pouvez utiliser %{X-Forwarded-For}i dans la chaÍne de format du journal du serveur demandÈ pour enregistrer les adresses IP des clients originaux, mais il est possible que vous obteniez plusieurs adresses si la requÉte passe Þ travers plusieurs mandataires.

Voir aussi les directives ProxyPreserveHost et ProxyVia directives, qui permettent de contrÒler d'autres en-tÉtes de requÉte.

top

AllowCONNECT Directive

Description:Ports autorisÈs Þ se CONNECTer Þ travers le mandataire
Syntaxe:AllowCONNECT port [port] ...
DÈfaut:AllowCONNECT 443 563
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

La directive AllowCONNECT permet de spÈcifier une liste de numÈros de ports auxquels la mÈthode de mandataire CONNECT pourra se connecter. Les navigateurs d'aujourd'hui utilisent cette mÈthode dans le cas oÛ une connexion https est requise et oÛ le tunneling mandataire sur HTTP est en service.

Par dÈfaut, seuls les ports par dÈfauts https (443) et snews (563) sont pris en compte. Vous pouvez utiliser la directive AllowCONNECT pour outrepasser ces valeurs par dÈfaut et n'autoriser les connexions que vers les ports spÈcifiÈs.

Notez que le module mod_proxy_connect doit Étre chargÈ dans le serveur pour pouvoir accÈder au support de CONNECT.

top

BalancerMember Directive

Description:Ajoute un membre Þ un groupe de rÈpartition de charge
Syntaxe:BalancerMember [balancerurl] url [clÈ=valeur [clÈ=valeur ...]]
Contexte:rÈpertoire
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.2 d'Apache.

Cette directive parmet d'ajouter un membre Þ un groupe de rÈpartition de charge. Elle peut se trouver dans un conteneur <Proxy balancer://...>, et accepte tous les paramÕtres de paires clÈ/valeur que supporte la directive ProxyPass.

L'argument balancerurl n'est requis que s'il ne se trouve pas dÕjÞ dans la directive de conteneur <Proxy balancer://...>. Il correspond Þ l'URL d'un rÈpartiteur de charge dÈfini par une directive ProxyPass.

top

NoProxy Directive

Description:Serveurs, domaines ou rÈseaux auquels on se connectera directement
Syntaxe:NoProxy domaine [domaine] ...
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

Cette directive n'a d'utilitÈ que pour les serveurs mandataires Apache au sein d'Intranets. La directive NoProxy permet de spÈcifier une liste de sous-rÈseaux, d'adresses IP, de serveurs et/ou de domaines sÈparÈs par des espaces. Une requÉte pour un serveur qui correspond Þ un ou plusieurs critÕres sera toujours servie par ce serveur directement, sans Étre redirigÈe vers le(s) serveur(s) mandataire(s) dÈfini(s) par la directive ProxyRemote.

Exemple

ProxyRemote * http://pare-feu.example.com:81
NoProxy .example.com 192.168.112.0/21

Le type des arguments serveur de la directive NoProxy appartiennent Þ la liste suivante :

Domaine

Un domaine est ici un nom de domaine DNS partiellement qualifiÈ prÈcÈdÈ d'un point. Il reprÈsente une liste de serveurs qui appartiennent logiquement au mÉme domaine ou Þ la mÉme zonz DNS (en d'autres termes, les nom des serveurs se terminent tous par domaine).

Exemple

.com .apache.org.

Pour faire la distinction entre domaines et nom d'hÒtes (des points de vue Þ la fois syntaxique et sÈmantique, un domaine DNS pouvant aussi avoir un enregistrement DNS de type A !), les domaines sont toujours spÈcifiÈs en les prÈfixant par un point.

Note

Les comparaisons de noms de domaines s'effectuent sans tenir compte de la casse, et les parties droites des Domaines sont toujours censÈes correspondre Þ la racine de l'arborescence DNS, si bien que les domaines .ExEmple.com et .example.com. (notez le point Þ la fin du nom) sont considÈrÈs comme identiques. Comme une comparaison de domaines ne nÈcessite pas de recherche DNS, elle est beaucoup plus efficace qu'une comparaison de sous-rÈseaux.

Sous-rÈseau

Un Sous-rÈseau est une adresse internet partiellement qualifiÈe sous forme numÈrique (quatre nombres sÈparÈs par des points), optionnellement suivie d'un slash et du masque de sous-rÈseau spÈcifiant le nombre de bits significatifs dans le Sous-rÈseau. Il reprÈsente un sous-rÈseau de serveurs qui peuvent Étre atteints depuis la mÉme interface rÈseau. En l'absence de masque de sous-rÈseau explicite, il est sous-entendu que les digits manquants (ou caractÕres 0) de fin spÈcifient le masque de sous-rÈseau (Dans ce cas, le masque de sous-rÈseau ne peut Étre qu'un multiple de 8). Voici quelques exemples :

192.168 ou 192.168.0.0
le sous-rÈseau 192.168.0.0 avec un masque de sous-rÈseau implicite de 16 bits significatifs (parfois exprimÈ sous la forme 255.255.0.0)
192.168.112.0/21
le sous-rÈseau 192.168.112.0/21 avec un masque de sous-rÈseau implicite de 21 bits significatifs (parfois exprimÈ sous la forme255.255.248.0)

Comme cas extrÕmes, un Sous-rÈseau avec un masque de sous-rÈseau de 32 bits significatifs est Èquivalent Þ une adresse IP, alors qu'un Sous-rÈseau avec un masque de sous-rÈseau de 0 bit significatif (c'est Þ dire 0.0.0.0/0) est identique Þ la constante _Default_, et peut correspondre Þ toute adresse IP.

Adresse IP

Une Adresse IP est une adresse internet pleinement qualifiÈe sous forme numÈrique (quatre nombres sÈparÈs par des points). En gÈnÈral, cette adresse reprÈsente un serveur, mais elle ne doit pas nÈcessairement correspondre Þ un nom de domaine DNS.

Exemple

192.168.123.7

Note

Une Adresse IP ne nÈcessite pas de rÈsolution DNS, et peut ainsi s'avÈrer plus efficace quant aux performances d'Apache.

Nom de serveur

Un Nom de serveur est un nom de domaine DNS pleinement qualifiÈ qui peut Étre rÈsolu en une ou plusieurs adresses IP par le service de noms de domaines DNS. Il reprÈsente un hÒte logique (par opposition aux Domaines, voir ci-dessus), et doit pouvoir Étre rÈsolu en une ou plusieurs adresses IP (ou souvent en une liste d'hÒtes avec diffÈrentes adresses IP).

Exemples

prep.ai.example.com
www.apache.org

Note

Dans de nombreuses situations, il est plus efficace de spÈcifier une adresse IP qu'un Nom de serveur car cela Èvite d'avoir Þ effectuer une recherche DNS. La rÈsolution de nom dans Apache peut prendre un temps trÕs long lorsque la connexion avec le serveur de noms utilise une liaison PPP lente.

Les comparaisons de Nom de serveur s'effectuent sans tenir compte de la casse, et les parties droites des Noms de serveur sont toujours censÈes correspondre Þ la racine de l'arborescence DNS, si bien que les domaines WWW.ExEmple.com et www.example.com. (notez le point Þ la fin du nom) sont considÈrÈs comme identiques.

Voir aussi

top

<Proxy> Directive

Description:Conteneur de directives s'appliquant Þ des ressources mandatÈes
Syntaxe:<Proxy url-avec-jokers> ...</Proxy>
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

Les directives situÈes dans une section <Proxy> ne s'appliquent qu'au contenu mandatÈ concernÈ. Les jokers de style shell sont autorisÈs.

Par eexemple, les lignes suivantes n'autoriseront Þ accÈder Þ un contenu via votre serveur mandataire que les hÒtes appartenant Þ votre-reseau.example.com :

<Proxy *>
Order Deny,Allow
Deny from all
Allow from votre-reseau.example.com
</Proxy>

Dans l'exemple suivant, tous les fichiers du rÈpertoire foo de example.com seront traitÈs par le filtre INCLUDES lorsqu'ils seront envoyÈs par l'intermÈdiaire du serveur mandataire :

<Proxy http://example.com/foo/*>
SetOutputFilter INCLUDES
</Proxy>

Voir aussi

top

ProxyBadHeader Directive

Description:DÈtermine la maniÕre de traiter les lignes d'en-tÉte incorrectes d'une rÈponse
Syntaxe:ProxyBadHeader IsError|Ignore|StartBody
DÈfaut:ProxyBadHeader IsError
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.0.44 d'Apache

La directive ProxyBadHeader permet de dÈterminer le comportement de mod_proxy lorsqu'il reÃoit des lignes d'en-tÉte de rÈponse dont la syntaxe n'est pas valide (c'est Þ dire ne contenant pas de caractÕre ':') en provenance du serveur original. Les arguments disponibles sont :

IsError
Annule la requÉte et renvoie une rÈponse de code 502 (mauvaise passerelle). C'est le comportement par dÈfaut.
Ignore
Traite les lignes d'en-tÉte incorrectes comme si elles n'avaient pas ÈtÈ envoyÈes.
StartBody
A la rÈception de la premiÕre ligne d'en-tÉte incorrecte, les autres en-tÉtes sont lus et ce qui reste est traitÈ en tant que corps. Ceci facilite la prise en compte des serveurs d'arriÕre-plan boguÈs qui oublient d'insÈrer une ligne vide entre les en-tÉtes et le corps.
top

ProxyBlock Directive

Description:Termes, serveurs ou domaines bloquÈs par le mandataire
Syntaxe:ProxyBlock *|terme|serveur|domaine [terme|serveur|domaine] ...
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

La directive ProxyBlock permet de spÈcifier une liste de termes, serveurs et/ou domaines, sÈparÈs par des espaces. Les requÉtes de documents HTTP, HTTPS, FTP vers des sites dont les noms contiennent des termes, noms de serveur ou domaine correspondants seront bloquÈs par le serveur mandataire. La module proxy va aussi tenter de dÈterminer les adresses IP des items de la liste qui peuvent correspondre Þ des noms d'hÒtes au cours du dÈmarrage, et les mettra en cache Þ des fins de comparaisons ultÈrieures. Ceci peut ralentir le dÈmarrage du serveur.

Exemple

ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu

rocky.wotsamattau.edu aurait aussi correspondu s'il avait ÈtÈ spÈcifiÈ par son adresse IP.

Notez que wotsamattau aurait suffi pour correspondre Þ wotsamattau.edu.

Notez aussi que

ProxyBlock *

bloque les connexions vers tous les sites.

top

ProxyDomain Directive

Description:Nom de domaine par dÈfaut pour les requÉtes mandatÈes
Syntaxe:ProxyDomain Domaine
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

Cette directive n'a d'utilitÈ que pour les serveurs mandataires Apache au sein d'un Intranet. La directive ProxyDomain permet de spÈcifier le domaine par dÈfaut auquel le serveur mandataire apache appartient. Si le serveur reÃoit une requÉte pour un hÒte sans nom de domaine, il va gÈnÈrer une rÈponse de redirection vers le mÉme hÒte suffixÈ par le Domaine spÈcifiÈ.

Exemple

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

top

ProxyErrorOverride Directive

Description:Outrepasser les pages d'erreur pour les contenus mandatÈs
Syntaxe:ProxyErrorOverride On|Off
DÈfaut:ProxyErrorOverride Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.0 d'Apache

Cette directive est utile pour les configurations de mandataires inverses, lorsque vous souhaitez que les pages d'erreur envoyÈes aux utilisateurs finaux prÈsentent un aspect homogÕne. Elle permet aussi l'inclusion de fichiers (via les SSI de mod_include) pour obtenir le code d'erreur et agir en consÈquence (le comportement par dÈfaut afficherait la page d'erreur du serveur mandatÈ, alors que c'est le message d'erreur SSI qui sera affichÈ si cette directive est Þ "on").

Cette directive n'affecte pas le traitement des rÈponses informatives (1xx), de type succÕs normal (2xx), ou de redirection (3xx).

top

ProxyFtpDirCharset Directive

Description:DÈfinit le jeu de caractÕres des listings FTP mandatÈs
Syntaxe:ProxyFtpDirCharset jeu-caractÕres
DÈfaut:ProxyFtpDirCharset ISO-8859-1
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.2.7 d'Apache

La directive ProxyFtpDirCharset permet de dÈfinir le jeu de caractÕres Þ utiliser pour les listings FTP en HTML gÈnÈrÈs par mod_proxy_ftp.

top

ProxyIOBufferSize Directive

Description:DÈtermine la taille du tampon interne de transfert de donnÈes
Syntaxe:ProxyIOBufferSize octets
DÈfaut:ProxyIOBufferSize 8192
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

La directive ProxyIOBufferSize permet d'ajuster la taille du tampon interne utilisÈ comme bloc-note pour les transferts de donnÈes entre entrÈe et sortie. La taille doit Étre infÈrieure ou Ègale Þ 8192 octets.

Dans la plupart des cas, il n'y a aucune raison de modifier cette valeur.

top

<ProxyMatch> Directive

Description:Conteneur de directives s'appliquant Þ des ressources mandatÈes correspondant Þ une expression rationnelle
Syntaxe:<ProxyMatch regex> ...</ProxyMatch>
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

La directive <ProxyMatch> est identique Þ la directive <Proxy>, Þ l'exception qu'elle dÈfinit les URLs auxquelles elle s'applique en utilisant une expression rationnelle.

Voir aussi

top

ProxyMaxForwards Directive

Description:Nombre maximum de mandataires Þ travers lesquelles une requÉte peut Étre redirigÈe
Syntaxe:ProxyMaxForwards nombre
DÈfaut:ProxyMaxForwards -1
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis Apache 2.0 ; comportement par dÈfaut modifiÈ dans 2.2.7

La directive ProxyMaxForwards permet de spÈcifier le nombre maximum de mandataires Þ travers lesquels une requÉte peut passer dans le cas oÛ la la requÉte ne contient pas d'en-tÉte Max-Forwards. Ceci permet de se prÈmunir contre les boucles infinies de mandataires ou contre les attaques de type dÈni de service.

Exemple

ProxyMaxForwards 15

Notez que la dÈfinition de la directive ProxyMaxForwards constitue une violation du protocole HTTP/1.1 (RFC2616), qui interdit Þ un mandataire de dÈfinir Max-Forwards si le client ne l'a pas fait lui-mÉme. Les versions prÈcÈdentes d'Apache la dÈfinissaient systÈmatiquement. Une valeur nÈgative de ProxyMaxForwards, y compris la valeur par dÈfaut -1, implique un comportement compatible avec le protocole, mais vous expose aux bouclages infinis.

top

ProxyPass Directive

Description:RÈfÈrencer des serveurs distants depuis l'espace d'URLs du serveur local
Syntaxe:ProxyPass [chemin] !|url [clÈ=valeur [clÈ=valeur ...]] [nocanon] [interpolate]
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy

Cette directive permet rÈfÈrencer des serveurs distants depuis l'espace d'URLs du serveur local ; le serveur local n'agit pas en tant que mandataire au sens conventionnel, mais plutÒt comme miroir du serveur distant. Le serveur local est souvent nommÈ mandataire inverse ou passerelle. L'argument chemin est le nom d'un chemin virtuel local ; url est une URL partielle pour le serveur distant et ne doit pas contenir de chaÍne d'arguments.

En gÈnÈral, la directive ProxyRequests doit Étre dÈfinie Þ off lorsqu'on utilise la directive ProxyPass.

Supposons que le serveur local a pour adresse http://example.com/ ; alors la ligne

ProxyPass /miroir/foo/ http://backend.example.com/

va convertir en interne toute requÉte pour http://example.com/miroir/foo/bar en une requÉte mandatÈe pour http://backend.example.com/bar.

Si le premier argument se termine par un slash /, il doit en Étre de mÉme pour le second argument et vice versa. Dans le cas contraire, il risque de manquer des slashes nÈcessaires dans la requÉte rÈsultante vers le serveur d'arriÕre-plan et les rÈsulats ne seront pas ceux attendus.

Le drapeau ! permet de soustraire un sous-rÈpertoire du mandat inverse, comme dans l'exemple suivant :

ProxyPass /miroir/foo/i !
ProxyPass /miroir/foo http://backend.example.com

va mandater toutes les requÉtes pour /miroir/foo vers backend.example.com, sauf les requÉtes pour /miroir/foo/i.

Ordre de classement des directives ProxyPass

Les directives ProxyPass et ProxyPassMatch sont traitÈes selon leur ordre d'apparition dans le fichier de configuration. La premiÕre qui correspond s'applique. Ainsi, vous devez classer les directives ProxyPass qui peuvent entrer en conflit, de l'URL la plus longue Þ la plus courte. Dans le cas contraire, les directives dont l'URL constitue une partie du dÈbut de l'URL de directives apparaissant plus loin dans la configuration vont occulter ces derniÕres. Notez que tout ceci est en relation avec le partage de worker.

Pour les mÉmes raisons, les exclusions doivent apparaÍtre avant les directives ProxyPass gÈnÈrales.

Depuis la version 2.1 du serveur HTTP Apache, mod_proxy supporte les jeux de connexions vers un serveur d'arriÕre-plan. Ainsi, les connexions crÈÈes Þ la demande peuvent Étre conservÈes dans un jeu pour une utilisation ultÈrieure. Les limites de la taille du jeu de connexions et d'autres paramÕtres peuvent Étre dÈfinis au niveau de la directive ProxyPass via des arguments clÈ=valeur dÈcrits dans la table ci-dessous.

Par dÈfaut, mod_proxy permettra de conserver le nombre maximum de connexions pouvant Étre utilisÈes simultanÈment par le processus enfant concernÈ du serveur web. Vous pouvez utiliser le paramÕtre max pour rÈduire ce nombre par rapport Þ la valeur par dÈfaut. Vous pouvez aussi utiliser le paramÕtre ttl pour dÈfinir une durÈe de vie optionnelle ; ainsi, les connections qui n'ont pas ÈtÈ utilisÈes au bout de ttl secondes seront fermÈes. Le paramÕtre ttl permet aussi d'empÉcher l'utilisation d'une connexion susceptible d'Étre fermÈe suite Þ l'expiration de la durÈe de vie des connexions persistantes sur le serveur d'arriÕre-plan.

Le jeu de connexions est maintenu au niveau de chaque processus enfant du serveur web, et max et les autres paramÕtres ne font l'objet d'aucune coordination entre les diffÈrents processus enfants, sauf bien sur dans le cas oÛ un seul processus enfant est permis par la configuration du module multiprocessus.

ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300

ParamÕtre DÈfaut Description
min 0 Nombre minimum d'entrÈes dans le jeu de connexions, sans rapport avec le nombre rÈel de connexions. Ne doit Étre modifiÈ par rapport Þ la valeur par dÈfaut que dans des circonstances spÈciales oÛ la mÈmoire du tas associÈe aux connexions d'arriÕre-plan doit Étre prÈallouÈe ou conservÈe.
max 1...n Nombre maximum de connexions permises vers le serveur d'arriÕre-plan. La valeur par dÈfaut pour cette limite est le nombre de threads par processus pour le module multiprocessus actif. Pour le MPM Prefork, la valeur est toujours 1, alors que pour les autres, on peut la contrÒler via la directive ThreadsPerChild.
smax max Les entrÈes conservÈes du jeu de connexions au dessus de cette limite sont libÈrÈes au cours de certaines opÈrations si elles n'ont pas ÈtÈ utilisÈes au bout de leur durÈe de vie dÈfinie par le paramÕtre ttl. Si l'entrÈe du jeu de connexions est associÈe Þ une connexion, cette derniÕre sera alors fermÈe. Ce paramÕtre ne doit Étre modifiÈ par rapport Þ la valeur par dÈfaut que dans des circonstances spÈciales oÛ les entrÈes du jeu de connexions, et toutes connexions associÈes qui ont dÈpassÈ leur durÈe de vie doivent Étre respectivement libÈrÈes ou fermÈes plus impÈrativement.
acquire - Cette clÈ permet de dÈfinir le dÈlai maximum d'attente pour une connexion libre dans le jeu de connexions, en millisecondes. S'il n'y a pas de connexion libre dans le jeu, Apache renverra l'Ètat SERVER_BUSY au client.
connectiontimeout timeout DÈlai d'attente d'une connexion en secondes. La durÈe en secondes pendant laquelle Apache va attendre pour l'Ètablissement d'une connexion vers le serveur d'arriÕre-plan. Le dÈlai peut Étre spÈcifiÈ en millisecondes en ajoutant le suffixe ms.
disablereuse Off Vous pouvez utiliser cette clÈ pour forcer mod_proxy Þ fermer immÈdiatement une connexion vers le serveur d'arriÕre-plan aprÕs utilisation, et ainsi dÈsactiver le jeu de connexions permanentes vers ce serveur. Ceci peut s'avÈrer utile dans des situations oÛ un pare-feu situÈ entre Apache et le serveur d'arriÕre-plan (quelque soit le protocole) interrompt des connexions de maniÕre silencieuse, ou lorsque le serveur d'arriÕre-plan lui-mÉme est accessible par rotation de DNS (round-robin DNS). Pour dÈsactiver la rÈutilisation du jeu de connexions, dÈfinissez cette clÈ Þ On.
flushpackets off Permet de dÈfinir si le module mandataire doit vider automatiquement le tampon de sortie aprÕs chaque tronÃon de donnÈes. 'off' signifie que le tampon sera vidÈ si nÈcessaire, 'on' que le tampon sera vidÈ aprÕs chaque envoi d'un tronÃon de donnÈes, et 'auto' que le tampon sera vidÈ aprÕs un dÈlai de 'flushwait' millisecondes si aucune entrÈe n'est reÃue. Actuellement, cette clÈ n'est supportÈe que par AJP.
flushwait 10 Le dÈlai d'attente pour une entrÈe additionnelle, en millisecondes, avant le vidage du tampon en sortie dans le cas oÛ 'flushpackets' est Þ 'auto'.
keepalive Off

Cette clÈ doit Étre utilisÈe lorsque vous avez un pare-feu entre Apache httpd et le serveur d'arriÕre-plan, et si ce dernier tend Þ interrompre les connexions inactives. Cette clÈ va faire en sorte que le systÕme d'exploitation envoie des messages KEEP_ALIVE sur chacune des connexions inactives et ainsi Èviter la fermeture de la connexion par le pare-feu. Pour conserver les connexions persistantes, definissez cette propriÈtÈ Þ On.

La frÈquence de vÈrification des connexions TCP persistantes initiale et subsÈquentes dÈpend de la configuration globale de l'OS, et peut atteindre 2 heures. Pour Étre utile, la frÈquence configurÈe dans l'OS doit Étre infÈrieure au seuil utilisÈ par le pare-feu.

lbset 0 DÈfinit le groupe de rÈpartition de charge dont le serveur cible est membre. Le rÈpartiteur de charge va essayer tous les membres d'un groupe de rÈpartition de charge de numÈro infÈrieur avant d'essayer ceux dont le groupe possÕde un numÈro supÈrieur.
ping 0 Avec la clÈ ping, le serveur web envoie une requÉte CPING sur la connexion ajp13 avant de rediriger une requÉte. La valeur correspond au dÈlai d'attente de la rÈponse CPONG. Cette fonctionnalitÈ a ÈtÈ ajoutÈe afin de pallier aux problÕmes de blocage et de surcharge des serveurs Tomcat, et nÈcessite le support de ping/pong ajp13 qui a ÈtÈ implÈmentÈ dans Tomcat 3.3.2+, 4.1.28+ et 5.0.13+. Le trafic rÈseau peut s'en trouver augmentÈ en fonctionnement normal, ce qui peut poser problÕme, mais peut s'en trouver diminuÈ dans les cas oÛ les noeuds de cluster sont arrÉtÈs ou surchargÈs. Cette clÈ n'est actuellement utilisable qu'avec AJP. Le dÈlai peut aussi Étre dÈfini en millisecondes en ajoutant le suffixe ms.
loadfactor 1 Facteur de charge du serveur cible Þ utiliser avec les membres d'un groupe de rÈpartition de charge. Il s'agit d'un nombre entre 1 et 100 dÈfinissant le facteur de charge appliquÈ au serveur cible.
redirect - Route pour la redirection du serveur cible. Cette valeur est en gÈnÈral dÈfinie dynamiquement pour permettre une suppression sÈcurisÈe du noeud du cluster. Si cette clÈ est dÈfinie, toutes les requÉtes sans identifiant de session seront redirigÈes vers le membre de groupe de rÈpartition de charge dont la route correspond Þ la valeur de la clÈ.
retry 60 DÈlai entre deux essais du serveur cible du jeu de connexions en secondes. Si le serveur cible du jeu de connexions vers le serveur d'arriÕre-plan est dans un Ètat d'erreur, Apache ne redirigera pas de requÉte vers ce serveur avant l'expiration du dÈlai spÈcifiÈ. Ceci permet d'arrÉter le serveur d'arriÕre-plan pour maintenance, et de le remettre en ligne plus tard. Une valeur de 0 signifie toujours essayer les serveurs cibles dans un Ètat d'erreur sans dÈlai.
route - La route du serveur cible lorsqu'il est utilisÈ au sein d'un rÈpartiteur de charge. La route est une valeur ajoutÈe Þ l'identifiant de session.
status - Valeur constituÈe d'une simple lettre et dÈfinissant l'Ètat initial de ce serveur cible : 'D' correspond Þ "dÈsactivÈ", 'S' Þ "arrÉtÈ", 'I' Þ "erreurs ignorÈes", 'H' Þ "interruption Þ chaud" et 'E' Þ "erreur". Une valeur d'Ètat peut Étre dÈfinie (ce qui correspond au comportement par dÈfaut) en prÈfixant la valeur par '+', ou annulÈe en prÈfixant la valeur par '-'. Ainsi, la valeur 'S-E' dÈfinit l'Ètat de ce serveur cible Þ "arrÉtÈ" et supprime le drapeau "en-erreur".
timeout ProxyTimeout DÈlai d'attente de la connexion en secondes. Le nombre de secondes pendant lesquelles Apache attend l'envoi de donnÈes vers le serveur d'arriÕre-plan.
ttl - DurÈe de vie des connexions inactives et des entrÈes associÈes du jeu de connexions. Lorsque cette limite est atteinte, la connexion concernÈe ne sera plus utilisÈe ; elle sera ensuite fermÈe au bout d'un certain temps.

Si l'URL de la directive ProxyPass dÈbute par balancer:// (par exemple: balancer://cluster/, toute information relative au chemin est ignorÈe), alors un serveur cible virtuel ne communiquant pas rÈellement avec le serveur d'arriÕre-plan sera crÈÈ. Celui-ci sera en fait responsable de la gestion de plusieurs serveurs cibles "rÈels". Dans ce cas, un jeu de paramÕtres particuliers s'applique Þ ce serveur cible virtuel. Voir mod_proxy_balancer pour plus d'informations Þ propos du fonctionnement du rÈpartiteur de charge.

ParamÕtre DÈfaut Description
lbmethod byrequests MÈthode de rÈpartition de charge utilisÈe. Permet de sÈlectionner la mÈthode de planification de la rÈpartition de charge Þ utiliser. La valeur est soit byrequests, pour effectuer un dÈcompte de requÉtes pondÈrÈes, soit bytraffic, pour effectuer une rÈpartition en fonction du dÈcompte des octets transmis, soit bybusyness (Þ partir de la version 2.2.10 du serveur HTTP Apache), pour effectuer une rÈpartition en fonction des requÉtes en attente. La valeur par dÈfaut est byrequests.
maxattempts 1 de moins que le nombre de workers, ou 1 avec un seul worker Nombre maximum d'Èchecs avant abandon.
nofailover Off Si ce paramÕtre est dÈfini Þ On, la session va s'interrompre si le serveur cible est dans un Ètat d'erreur ou dÈsactivÈ. DÈfinissez ce paramÕtre Þ On si le serveur d'arriÕre-plan ne supporte pas la rÈplication de session.
stickysession - Nom de session persistant du rÈpartiteur. La valeur est gÈnÈralement du style JSESSIONID ou PHPSESSIONID, et dÈpend du serveur d'application d'arriÕre-plan qui supporte les sessions. Si le serveur d'application d'arriÕre-plan utilise des noms diffÈrents pour les cookies et les identifiants codÈs d'URL (comme les conteneurs de servlet), sÈparez-les par le caractÕre '|'. La premiÕre partie contient le cookie et la seconde le chemin.
scolonpathdelim Off Si ce paramÕtre est dÈfini Þ On, le caractÕre ';' sera utilisÈ comme sÈparateur de chemin de session persistante additionnel. Ceci permet principalement de simuler le comportement de mod_jk lorsqu'on utilise des chemins du style JSESSIONID=6736bcf34;foo=aabfa.
timeout 0 DÈlai du rÈpartiteur en secondes. Si ce paramÕtre est dÈfini, sa valeur correspond Þ la durÈe maximale d'attente pour un serveur cible libre. Le comportement par dÈfaut est de ne pas attendre.
failonstatus - Un code ou une liste de codes d'Ètat HTTP sÈparÈs par des virgules. S'il est dÈfini, ce paramÕtre va forcer le worker dans un Ètat d'erreur lorsque le serveur d'arriÕre-plan retounera un code d'Ètat spÈcifiÈ dans la liste. Le rÈtablissement du worker est le mÉme qu'avec les autres erreurs de worker. Disponible Þ partir de la version 2.2.17 du serveur HTTP Apache.
forcerecovery On Force la rÈcupÈration immÈdiate de tous les membres du rÈpartiteur sans tenir compte de leur paramÕtre de nouvel essai si tous les membres du rÈpartiteur sont dans un Ètat d'erreur. Dans certains cas cependant, un serveur d'arriÕre-plan dÈjÞ surchargÈ peut voir ses problÕmes s'aggraver si la rÈcupÈration de tous les membres du rÈpartiteur est forcÈe sans tenir compte de leur paramÕtre de nouvel essai. Dans ce cas, dÈfinissez ce paramÕtre Þ Off. Disponible depuis la version 2.2.23 du serveur HTTP Apache.

Exemple de configuration d'un rÈpartiteur

ProxyPass /zone-speciale http://special.example.com smax=5 max=10
ProxyPass / balancer://mon-cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
<Proxy balancer://mon-cluster>
BalancerMember ajp://1.2.3.4:8009
BalancerMember ajp://1.2.3.5:8009 loadfactor=20
# Serveur moins puissant ; faites-lui traiter moins de requÉtes,
BalancerMember ajp://1.2.3.6:8009 loadfactor=5
</Proxy>

Configuration d'un serveur cible de rÈserve qui ne sera utilisÈ que si aucun autre serveur cible n'est disponible

ProxyPass / balancer://hotcluster/
<Proxy balancer://hotcluster>
BalancerMember ajp://1.2.3.4:8009 loadfactor=1
BalancerMember ajp://1.2.3.5:8009 loadfactor=2
# La ligne suivante configure le serveur cible de rÈserve
BalancerMember ajp://1.2.3.6:8009 status=+H
ProxySet lbmethod=bytraffic
</Proxy>

Normalement, mod_proxy va mettre sous leur forme canonique les URLs traitÈes par ProxyPass. Mais ceci peut Étre incompatible avec certains serveurs d'arriÕre-plan, et en particulier avec ceux qui utilisent PATH_INFO. Le mot-clÈ optionnel nocanon modifie ce comportement et permet de transmettre le chemin d'URL sous sa forme brute au serveur d'arriÕre-plan. Notez que ceci peut affecter la sÈcuritÈ de votre serveur d'arriÕre-plan, car la protection limitÈe contre les attaques Þ base d'URL que fournit le mandataire est alors supprimÈe.

Le mot-clÈ optionnel interpolate (disponible depuis httpd 2.2.9), en combinaison avec la directive ProxyPassInterpolateEnv, permet Þ ProxyPass d'interpoler les variables d'environnement Þ l'aide de la syntaxe ${VARNAME}. Notez que de nombreuses variables d'environnement standard dÈrivÈes de CGI n'existeront pas lorsque l'interpolation se produit ; vous devrez alors encore avoir avoir recours Þ mod_rewrite pour des rÕgles complexes.

Lorsque la directive ProxyPass est utilisÈe Þ l'intÈrieur d'une section <Location>, le premier argument est omis et le rÈpertoire local est obtenu Þ partir de la section <Location>. Il en est de mÉme Þ l'intÈrieur d'une section <LocationMatch> ; cependant, ProxyPass n'interprÕte pas les expressions rationnelles, et dans ce cas, il est nÈcessaire d'utiliser la directive ProxyPassMatch.

Cette directive ne peut pas Étre placÈe dans une section <Directory> ou <Files>.

Si vous avez besoin d'un configuration de mandataire inverse plus souple, reportez-vous Þ la documentaion de la directive RewriteRule et son drapeau [P].

top

ProxyPassInterpolateEnv Directive

Description:Active l'interpolation des variables d'environnement dans les configurations de mandataires inverses
Syntaxe:ProxyPassInterpolateEnv On|Off
DÈfaut:ProxyPassInterpolateEnv Off
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.2.9 d'Apache

Cette directive, ainsi que l'argument interpolate des directives ProxyPass, ProxyPassReverse, ProxyPassReverseCookieDomain et ProxyPassReverseCookiePath, permet de configurer dynamiquement un mandataire inverse Þ l'aide de variables d'environnement, ces derniÕres pouvant Étre dÈfinies par un autre module comme mod_rewrite. Elle affecte les directives ProxyPass, ProxyPassReverse, ProxyPassReverseCookieDomain, et ProxyPassReverseCookiePath, en leur indiquant de remplacer la chaÍne ${nom_var} dans les directives de configuration par la valeur de la variable d'environnement nom_var (si l'option interpolate est spÈcifiÈe).

Conservez cette directive Þ off (pour les performances du serveur), sauf si vous en avez rÈellement besoin.

top

ProxyPassMatch Directive

Description:Fait correspondre des serveurs distants dans l'espace d'URL du serveur local en utilisant des expressions rationnelles
Syntaxe:ProxyPassMatch [regex] !|url [clÈ=valeur [clÈ=valeur ...]]
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.2.5 d'Apache

Cette directive est identique Þ la directive ProxyPass, mais fait usage des expressions rationnelles, au lieu d'une simple comparaison de prÈfixes. L'expression rationnelle spÈcifiÈe est comparÈe Þ l'url, et si elle correspond, le serveur va substituer toute correspondance entre parenthÕses dans la chaÍne donnÈe et l'utiliser comme nouvelle url.

Supposons que le serveur local a pour adresse http://example.com/ ; alors

ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1

va provoquer la conversion interne de la requÉte locale http://example.com/foo/bar.gif en une requÉte mandatÈe pour http://backend.example.com/foo/bar.gif.

Note

L'argument URL doit pouvoir Étre interprÈtÈ en tant qu'URL avant les substitutions d'expressions rationnelles (et doit aussi l'Étre aprÕs). Ceci limite les correspondances que vous pouvez utiliser. Par exemple, si l'on avait utilisÈ

ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com:8000$1

dans l'exemple prÈcÈdent, nous aurions provoquÈ une erreur de syntaxe au dÈmarrage du serveur. C'est une bogue (PR 46665 dans ASF bugzilla), et il est possible de la contourner en reformulant la correspondance :

ProxyPassMatch ^/(.*\.gif)$ http://backend.example.com:8000/$1

Le drapeau ! vous permet de ne pas mandater un sous-rÈpertoire donnÈ.

Lorsque cette directive se situe Þ l'intÈrieur d'une section <LocationMatch>, le premier argument est omis et l'expression rationnelle est obtenue Þ partir de la directive <LocationMatch>.

Si vous avez besoin d'une configuration de mandataire inverse plus flexible, reportez-vous Þ la directive RewriteRule avec le drapeau [P].

Avertissement Þ propos de la sÈcuritÈ

Lors de la construction de l'URL cible de la rÕgle, il convient de prendre en compte l'impact en matiÕre de sÈcuritÈ qu'aura le fait de permettre au client d'influencer le jeu d'URLs pour lesquelles votre serveur agira en tant que mandataire. Assurez-vous que la partie protocole://nom-serveur de l'URL soit fixe, ou ne permette pas au client de l'influencer induement.

top

ProxyPassReverse Directive

Description:Ajuste l'URL dans les en-tÉtes de la rÈponse HTTP envoyÈe par un serveur mandatÈ en inverse
Syntaxe:ProxyPassReverse [chemin] url [interpolate]
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy

Cette directive permet de faire en sorte qu'Apache ajuste l'URL dans les en-tÉtes Location, Content-Location et URI des rÈponses de redirection HTTP. Ceci est essentiel lorsqu'Apache est utilisÈ en tant que mandataire inverse (ou passerelle), afin d'Èviter de court-circuiter le mandataire inverse suite aux redirections HTTP sur le serveur d'arriÕre-plan qui restent derriÕre le mandataire inverse.

Seuls les en-tÉtes de rÈponse HTTP spÈcialement mentionnÈs ci-dessus seront rÈÈcrits. Apache ne rÈÈcrira ni les autres en-tÉtes de rÈponse, ni les rÈfÈrences d'URLs dans les pages HTML. Cela signifie que dans le cas oÛ un contenu mandatÈ contient des rÈfÈrences Þ des URLs absolues, elles court-circuiteront le mandataire. Le module mod_proxy_html de Nick Kew est un module tiers qui parcourt le code HTML et rÈÈcrit les rÈfÈrences d'URL.

chemin est le nom d'un chemin virtuel local. url est une URL partielle pour le serveur distant - ils sont utilisÈs de la mÉme faÃon qu'avec la directive ProxyPass.

Supposons par exemple que le serveur local a pour adresse http://example.com/ ; alors

ProxyPass /miroir/foo/ http://backend.example.com/
ProxyPassReverse /miroir/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain backend.example.com public.example.com
ProxyPassReverseCookiePath / /miroir/foo/

ne va pas seulement provoquer la conversion interne d'une requÉte locale pour http://example.com/miroir/foo/bar en une requÉte mandatÈe pour http://backend.example.com/bar (la fonctionnalitÈ fournie par ProxyPass). Il va aussi s'occuper des redirections que le serveur backend.example.com envoie : lorsque http://backend.example.com/bar est redirigÈ par celui-ci vers http://backend.example.com/quux, Apache corrige ceci en http://example.com/miroir/foo/quux avant de faire suivre la redirection HTTP au client. Notez que le nom d'hÒte utilisÈ pour construire l'URL est choisi en respectant la dÈfinition de la directive UseCanonicalName.

Notez que la directive ProxyPassReverse peut aussi Étre utilisÈe en conjonction avec la fonctionnalitÈ pass-through (RewriteRule ... [P]) du module mod_rewrite, car elle ne dÈpend pas d'une directive ProxyPass correspondante.

Le mot-clÈ optionnel interpolate (disponible depuis httpd 2.2.9), utilisÈ en combinaison avec la directive ProxyPassInterpolateEnv, permet l'interpolation des variables d'environnement spÈcifiÈes en utilisant le format ${VARNAME}.

Lorsque cette directive est utilisÈe dans une section <Location>, le premier argument est omis et le rÈpertoire local est obtenu Þ partir de l'argument de la directive <Location>. Il en est de mÉme Þ l'intÈrieur d'une section <LocationMatch>, mais le rÈsultat ne correspondra probablement pas Þ ce que vous attendez, car ProxyPassReverse interprÕte l'expression rationnelle littÈralement comme un chemin ; si nÈcessaire dans cette situation, spÈcifiez la directive ProxyPassReverse en dehors de la section, ou dans une section <Location> sÈparÈe.

Cette directive ne peut pas Étre placÈe dans une section <Directory> ou <Files>.

top

ProxyPassReverseCookieDomain Directive

Description:Ajuste la chaÍne correspondant au domaine dans les en-tÉtes Set-Cookie en provenance d'un serveur mandatÈ
Syntaxe:ProxyPassReverseCookieDomain domaine-interne domaine-public [interpolate]
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy

L'utilisation de cette directive est similaire Þ celle de la directive ProxyPassReverse, mais au lieu de rÈÈcrire des en-tÉtes qui contiennent des URLs, elle rÈÈcrit la chaÍne correspondant au domaine dans les en-tÉtes Set-Cookie.

top

ProxyPassReverseCookiePath Directive

Description:Ajuste la chaÍne correspondant au chemin dans les en-tÉtes Set-Cookie en provenance d'un serveur mandatÈ
Syntaxe:ProxyPassReverseCookiePath chemin-interne chemin-public [interpolate]
Contexte:configuration du serveur, serveur virtuel, rÈpertoire
Statut:Extension
Module:mod_proxy

Cette directive s'avÕre utile en conjonction avec la directive ProxyPassReverse dans les situations oÛ les chemins d'URL d'arriÕre-plan correspondent Þ des chemins publics sur le mandataire inverse. Cette directive permet de rÈÈcrire la chaÍne path dans les en-tÉtes Set-Cookie. Si le dÈbut du chemin du cookie correspond Þ chemin-interne, le chemin du cookie sera remplacÈ par chemin-public.

Dans l'exemple fourni avec la directive ProxyPassReverse, la directive :

ProxyPassReverseCookiePath / /mirror/foo/

va rÈÈcrire un cookie possÈdant un chemin d'arriÕre-plan / (ou /example ou en fait tout chemin) en /mirror/foo/..

top

ProxyPreserveHost Directive

Description:Utilise l'en-tÉte de requÉte entrante Host pour la requÉte du mandataire
Syntaxe:ProxyPreserveHost On|Off
DÈfaut:ProxyPreserveHost Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.0.31 d'Apache.

Lorsqu'elle est activÈe, cette directive va transmettre l'en-tÉte Host: de la requÉte entrante vers le serveur mandatÈ, au lieu du nom d'hÒte spÈcifiÈ par la directive ProxyPass.

Cette directive est habituellement dÈfinie Þ Off. Elle est principalement utile dans les configurations particuliÕres comme l'hÈbergement virtuel mandatÈ en masse Þ base de nom, oÛ l'en-tÉte Host d'origine doit Étre ÈvaluÈ par le serveur d'arriÕre-plan.

top

ProxyReceiveBufferSize Directive

Description:Taille du tampon rÈseau pour les connexions mandatÈes HTTP et FTP
Syntaxe:ProxyReceiveBufferSize octets
DÈfaut:ProxyReceiveBufferSize 0
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

La directive ProxyReceiveBufferSize permet de spÈcifier une taille de tampon rÈseau explicite (TCP/IP) pour les connexions mandatÈes HTTP et FTP, afin d'amÈliorer le dÈbit de donnÈes. Elle doit Étre supÈrieure Þ 512 ou dÈfinie Þ 0 pour indiquer que la taille de tampon par dÈfaut du systÕme doit Étre utilisÈe.

Exemple

ProxyReceiveBufferSize 2048

top

ProxyRemote Directive

Description:Mandataire distant Þ utiliser pour traiter certaines requÉtes
Syntaxe:ProxyRemote comparaison serveur-distant
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

Cette directive permet de dÈfinir des mandataires distants pour ce mandataire. comparaison est soit le nom d'un protocole que supporte le serveur distant, soit une URL partielle pour laquelle le serveur distant devra Étre utilisÈ, soit * pour indiquer que le serveur distant doit Étre utilisÈ pour toutes les requÉtes. serveur-distant est une URL partielle correspondant au serveur distant. Syntaxe :

serveur-distant = protocole://nom-serveur[:port]

protocole est effectivement le protocole Þ utiliser pour communiquer avec le serveur distant ; ce module ne supporte que http et https. Avec https, les requÉtes sont transmises par le mandataire distant via la mÈthode HTTP CONNECT.

Exemple

ProxyRemote http://bons-gars.example.com/ http://gars-mirroirs.example.com:8000
ProxyRemote * http://mandataire-intelligent.localdomain
ProxyRemote ftp http://mandataire-ftp.mon-domaine:8080

Dans la derniÕre ligne de l'exemple, le mandataire va faire suivre les requÉtes FTP, encapsulÈes dans une autre requÉte mandatÈe HTTP, vers un autre mandataire capable de les traiter.

Cette directive supporte aussi les configurations de mandataire inverse - un serveur web d'arriÕre-plan peut Étre intÈgrÈ dans l'espace d'URL d'un serveur virtuel, mÉme si ce serveur est cachÈ par un autre mandataire direct.

top

ProxyRemoteMatch Directive

Description:Le mandataire distant Þ utiliser pour traiter les requÉtes correspondant Þ une expression rationnelle
Syntaxe:ProxyRemoteMatch regex serveur-distant
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

La directive ProxyRemoteMatch est identique Þ la directive ProxyRemote, Þ l'exception que le premier argument est une expression rationnelle Þ mettre en correspondance avec l'URL de la requÉte.

top

ProxyRequests Directive

Description:Active la fonctionnalitÈ (standard) de mandataire direct
Syntaxe:ProxyRequests On|Off
DÈfaut:ProxyRequests Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

Cette directive permet d'activer/dÈsactiver la fonctionnalitÈ de serveur mandataire direct d'Apache. DÈfinir ProxyRequests Þ Off n'interdit pas l'utilisation de la directive ProxyPass.

Pour une configuration typique de mandataire inverse ou passerelle, cette directive doit Étre dÈfinie Þ Off.

Afin d'activer la fonctionnalitÈ de mandataire pour des sites HTTP et/ou FTP, les modules mod_proxy_http et/ou mod_proxy_ftp doivent aussi Étre chargÈs dans le serveur.

mod_proxy_connect doit Étre activÈ pour pouvoir mandater (en direct) des sites HTTPS.

Avertissement

N'activez pas la fonctionnalitÈ de mandataire avec la directive ProxyRequests avant d'avoir sÈcurisÈ votre serveur. Les serveurs mandataires ouverts sont dangereux non seulement pour votre rÈseau, mais aussi pour l'Internet au sens large.

Voir aussi

top

ProxySet Directive

Description:DÈfinit diffÈrents paramÕtres relatifs Þ la rÈpartition de charge des mandataires et aux membres des groupes de rÈpartition de charge
Syntaxe:ProxySet url clÈ=valeur [clÈ=valeur ...]
Contexte:rÈpertoire
Statut:Extension
Module:mod_proxy
CompatibilitÈ:ProxySet n'est disponible que depuis la version 2.2 d'Apache.

Cette directive propose une mÈthode alternative pour dÈfinir tout paramÕtre relatif aux rÈpartiteurs de charge et serveurs cibles de mandataires normalement dÈfini via la directive ProxyPass. Si elle se trouve dans un conteneur <Proxy url de rÈpartiteur|url de serveur cible>, l'argument url n'est pas nÈcessaire. Comme effet de bord, le rÈpartiteur ou serveur cible respectif est crÈÈ. Ceci peut s'avÈrer utile pour la mise en oeuvre d'un mandataire inverse via une directive RewriteRule au lieu de ProxyPass.

<Proxy balancer://hotcluster>
BalancerMember http://www2.example.com:8080 loadfactor=1
BalancerMember http://www3.example.com:8080 loadfactor=2
ProxySet lbmethod=bytraffic
</Proxy>

<Proxy http://backend>
ProxySet keepalive=On
</Proxy>

ProxySet balancer://foo lbmethod=bytraffic timeout=15

ProxySet ajp://backend:7001 timeout=15

Avertissement

Gardez Þ l'esprit qu'une mÉme clÈ de paramÕtre peut avoir diffÈrentes significations selon qu'elle s'applique Þ un rÈpartiteur ou Þ un serveur cible, et ceci est illustrÈ par les deux exemples prÈcÈdents oÛ il est question d'un timeout.

top

ProxyStatus Directive

Description:Affiche l'Ètat du rÈpartiteur de charge du mandataire dans mod_status
Syntaxe:ProxyStatus Off|On|Full
DÈfaut:ProxyStatus Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.2 d'Apache

Cette directive permet de spÈcifier si les donnÈes d'Ètat du rÈpartiteur de charge du mandataire doivent Étre affichÈes via la page d'Ètat du serveur du module mod_status.

Note

L'argument Full produit le mÉme effet que l'argument On.

top

ProxyTimeout Directive

Description:DÈlai d'attente rÈseau pour les requÉtes mandatÈes
Syntaxe:ProxyTimeout secondes
DÈfaut:Valeur de la directive Timeout
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
CompatibilitÈ:Disponible depuis la version 2.0.31 d'Apache

Cette directive permet Þ l'utilisateur de spÈcifier un dÈlai pour les requÉtes mandatÈes. Ceci s'avÕre utile dans le cas d'un serveur d'applications lent et boguÈ qui a tendance Þ se bloquer, et si vous prÈfÈrez simplement renvoyer une erreur timeout et abandonner la connexion en douceur plutÒt que d'attendre jusqu'Þ ce que le serveur veuille bien rÈpondre.

top

ProxyVia Directive

Description:Information fourni dans l'en-tÉte de rÈponse HTTP Via pour les requÉtes mandatÈes
Syntaxe:ProxyVia On|Off|Full|Block
DÈfaut:ProxyVia Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy

Cette directive permet de contrÒler l'utilisation de l'en-tÉte HTTP Via: par le mandataire. Le but recherchÈ est de contrÒler le flux des requÉtes mandatÈes tout au long d'une chaÍne de serveurs mandataires. Voir RFC 2616 (HTTP/1.1), section 14.45 pour une description des lignes d'en-tÉte Via:.

Langues Disponibles:  en  |  fr  |  ja 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.