<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_proxy

Langues Disponibles:  en  |  fr  |  ja 

Description:Serveur mandataire/passerelle multi-protocole
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.

mod_proxy et ses modules associ´┐Żs impl´┐Żmentent un mandataire/passerelle pour le serveur HTTP Apache, et supportent de nombreux protocoles courants, ainsi que plusieurs algorithmes de r´┐Żpartition de charge. Le support de protocoles et d'algorithmes de r´┐Żpartition de charge suppl´┐Żmentaires peut ´┐Żtre assur´┐Ż par des modules tiers.

Un jeu de modules charg´┐Żs dans le serveur permet de fournir les fonctionnalit´┐Żs souhait´┐Żes. Ces modules peuvent ´┐Żtre inclus statiquement ´┐Ż la compilation, ou dynamiquement via la directive LoadModule. Ce jeu de module doit comporter :

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

Le serveur HTTP 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 d'utilisateurs depuis Internet vers 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 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 *>
  Require host internal.example.com
</Proxy>
top

Acc´┐Żs via un gestionnaire

Vous pouvez aussi forcer le traitement d'une requ´┐Żte en tant que requ´┐Żte de mandataire inverse en cr´┐Żant un gestionnaire de transfert appropri´┐Ż. Dans l'exemple suivant, toutes les requ´┐Żtes pour des scripts PHP seront transmises au serveur FastCGI sp´┐Żcifi´┐Ż via un mandat inverse :

Scripts PHP et mandataire inverse

<FilesMatch \.php$>
    SetHandler  "proxy:unix:/path/to/app.sock|fcgi://localhost/"
</FilesMatch>

Cette fonctionnalit´┐Ż est disponible ´┐Ż partir de la version 2.4.10 du serveur HTTP Apache.

top

Workers

Le mandataire g´┐Żre la configuration et les param´┐Żtres de communication des serveurs originaux au sein d'objets nomm´┐Żs workers. Deux types de worker sont fournis : le worker par d´┐Żfaut du mandataire direct et le worker par d´┐Żfaut du mandataire inverse. Il est aussi possible de d´┐Żfinir explicitement des workers suppl´┐Żmentaires.

Les deux workers par d´┐Żfaut poss´┐Żdent une configuration fig´┐Że et seront utilis´┐Żs si aucun autre worker ne correspond ´┐Ż la requ´┐Żte. Ils n'utilisent ni les jeux de connexions (connection pooling), ni les connexions HTTP persistantes (Keep-Alive). En effet, les connexions TCP vers le serveur original sont ferm´┐Żes et ouvertes pour chaque requ´┐Żte.

Les workers d´┐Żfinis explicitement sont identifi´┐Żs par leur URL. Ils sont en g´┐Żn´┐Żral d´┐Żfinis via les directives ProxyPass ou ProxyPassMatch lorsqu'on les utilise dans le cadre d'un mandataire inverse :

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

Cette directive va cr´┐Żer un worker associ´┐Ż ´┐Ż l'URL du serveur original http://backend.example.com, et utilisant les valeurs de timeout donn´┐Żes. Lorsqu'ils sont utilis´┐Żs dans le cadre d'un mandataire direct, les workers sont en g´┐Żn´┐Żral d´┐Żfinis via la directive ProxySet,

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

ou encore via les directives Proxy et ProxySet :

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

L'utilisation de workers d´┐Żfinis explicitement dans le mode mandataire direct n'est pas tr´┐Żs courante, car les mandataires directs communiquent en g´┐Żn´┐Żral avec de nombreux serveurs originaux. La cr´┐Żation explicite de workers pour certains serveurs originaux peut cependant s'av´┐Żrer utile si ces serveurs sont tr´┐Żs souvent sollicit´┐Żs. A leur niveau, les workers explicitement d´┐Żfinis ne poss´┐Żdent aucune notion 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´┐Ż dans le cadre d'un mandataire inverse sera aussi utilis´┐Ż dans le cadre d'un mandataire directe chaque fois que l'URL vers le serveur original correspondra ´┐Ż l'URL du worker, et vice versa.

L'URL qui identifie un worker correspond ´┐Ż l'URL de son serveur original, y compris un ´┐Żventuel chemin donn´┐Ż :

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

Dans cet exemple, deux workers diff´┐Żrents sont d´┐Żfinis, chacun d'eux utilisant des configurations et jeux de connexions s´┐Żpar´┐Żs.

Partage de workers

Le partage de workers intervient lorsque les URLs des workers s'entrecoupent, ce qui arrive lorsque l'URL d'un worker correspond au 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 en fait utilis´┐Ż. L'avantage de ceci r´┐Żside dans le fait qu'il n'existe qu'un seul jeu de connexions, ces derni´┐Żres ´┐Żtant donc r´┐Żutilis´┐Żes plus souvent. Notez que tous les attributs de configuration d´┐Żfinis explicitement pour le deuxi´┐Żme worker seront ignor´┐Żs, ce qui sera journalis´┐Ż en tant qu'avertissement. Ainsi, dans l'exemple ci-dessus, la valeur de timeout retenue pour l'URL /exemples sera 60, et non 10 !

Si vous voulez emp´┐Żcher le partage de workers, classez vos d´┐Żfinitions de workers selon la longueur des URLs, de la plus longue ´┐Ż la plus courte. Si au contraire vous voulez favoriser ce partage, utilisez l'ordre de classement inverse. Voir aussi l'avertissement ´┐Ż propos de l'ordre de classement des directives ProxyPass.

Les workers d´┐Żfinis explicitement sont de deux sortes : workers directs et workers de r´┐Żpartition (de charge). Ils supportent de nombreux attributs de configuration importants d´┐Żcrits dans la directive ProxyPass. Ces m´┐Żmes attributs peuvent aussi ´┐Żtre d´┐Żfinis via la directive ProxySet.

Le jeu d'options disponibles pour un worker direct d´┐Żpend du protocole sp´┐Żcifi´┐Ż dans l'URL du serveur original. Les protocoles disponibles comprennent ajp, fcgi, ftp, http et scgi.

Les workers de r´┐Żpartition sont des workers virtuels qui utilisent les workers directs, connus comme faisant partie de leurs membres, pour le traitement effectif des requ´┐Żtes. Chaque r´┐Żpartiteur peut comporter plusieurs membres. Lorsqu'il traite une requ´┐Żte, il choisit un de ses membres en fonction de l'algorithme de r´┐Żpartition de charge d´┐Żfini.

Un worker de r´┐Żpartition est cr´┐Ż´┐Ż si son URL de worker comporte balancer comme indicateur de protocole. L'URL du r´┐Żpartiteur permet d'identifier de mani´┐Żre unique le worker de r´┐Żpartition. La directive BalancerMember permet d'ajouter des membres au r´┐Żpartiteur.

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 *>
  Require ip 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 utilisant la directive ProxyPass avec ProxyRequests 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.

Voir aussi la variable d'environnement Proxy-Chain-Auth.

top

Ralentissement au d´┐Żmarrage

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 en Intranet

Un serveur mandataire Apache httpd 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 httpd 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 /buggyappserver/>
  ProxyPass http://buggyappserver: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 (chunked transfer encoding), 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.

Dans certaines circonstances, le serveur doit mettre en file d'attente sur disque les corps de requ´┐Żtes afin de satisfaire le traitement demand´┐Ż des corps de requ´┐Żtes. Par exemple, cette mise en file d'attente se produira si le corps original a ´┐Żt´┐Ż envoy´┐Ż selon un codage morcel´┐Ż (et poss´┐Żde une taille importante), alors que l'administrateur a demand´┐Ż que les requ´┐Żtes du serveur d'arri´┐Żre-plan soient envoy´┐Żes avec l'en-t´┐Żte Content-Length ou en HTTP/1.0. Cette mise en file d'attente se produira aussi si le corps de la requ´┐Żte contient d´┐Żj´┐Ż un en-t´┐Żte Content-Length, alors que le serveur est configur´┐Ż pour filtrer les corps des requ´┐Żtes entrantes.

La directive LimitRequestBody ne s'applique qu'aux corps de requ´┐Żtes que le serveur met en file d'attente sur disque.

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 originale 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.

Note : Si vous devez ajouter des en-t´┐Żtes particuliers ´┐Ż la requ´┐Żte mandat´┐Że, utilisez la directive RequestHeader.

top

BalancerGrowth Directive

Description:Nombre de membres suppl´┐Żmentaires pouvant ´┐Żtre ajout´┐Żs apr´┐Żs la configuration initiale
Syntaxe:BalancerGrowth #
D´┐Żfaut:BalancerGrowth 5
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:BalancerGrowth est disponible depuis la version 2.3.13 du serveur HTTP Apache

Cette directive permet de d´┐Żfinir le nombre de membres pouvant ´┐Żtre ajout´┐Żs au groupe de r´┐Żpartition de charge pr´┐Żconfigur´┐Ż d'un serveur virtuel. Elle n'est active que si le groupe a ´┐Żt´┐Ż pr´┐Żconfigur´┐Ż avec un membre au minimum.

top

BalancerInherit Directive

Description:H´┐Żritage des membres du groupes de r´┐Żpartition de charge du mandataire d´┐Żfinis au niveau du serveur principal
Syntaxe:BalancerInherit On|Off
D´┐Żfaut:BalancerInherit On
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.4.5 du serveur HTTP Apache.

Cette directive permet d'attribuer au serveur virtuel courant l'h´┐Żritage des membres de groupes de r´┐Żpartition de charge d´┐Żfinis au niveau du serveur principal. Elle ne doit pas ´┐Żtre activ´┐Że si vous utilisez la fonctionnalit´┐Ż de modifications dynamiques du gestionnaire de r´┐Żpartition de charge (Balancer Manager) pour ´┐Żviter des probl´┐Żmes et des comportements inattendus.

Les d´┐Żfinitions au niveau du serveur principal constituent les d´┐Żfinitions par d´┐Żfaut au niveau des serveurs virtuels.

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 du serveur HTTP Apache.

Cette directive permet 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.

La directive BalancerMember accepte un param´┐Żtre suppl´┐Żmentaire : loadfactor. Il s'agit du facteur de charge du membre - un nombre entre 1 (valeur par d´┐Żfaut) et 100, qui d´┐Żfinit la charge ´┐Ż appliquer au membre en question.

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.

La partie chemin de l'URL du r´┐Żpartiteur dans toute directive de conteneur <Proxy balancer://...> est ignor´┐Że.

En particulier, le slash de fin de l'URL d'un BalancerMember doit ´┐Żtre supprim´┐Ż.

top

BalancerPersist Directive

Description:Tente de conserver les changements effectu´┐Żs par le gestionnaire de r´┐Żpartition de charge apr´┐Żs un red´┐Żmarrage du serveur.
Syntaxe:BalancerPersist On|Off
D´┐Żfaut:BalancerPersist Off
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:BalancerPersist n'est disponible qu'´┐Ż partir de la version 2.4.4 du serveur HTTP Apache.

Cette directive permet de conserver le contenu de l'espace m´┐Żmoire partag´┐Ż associ´┐Ż aux r´┐Żpartiteurs de charge et ´┐Ż leurs membres apr´┐Żs un red´┐Żmarrage du serveur. Ces modifications locales ne sont ainsi pas perdues lors des transitions d'´┐Żtat dues ´┐Ż un red´┐Żmarrage.

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 httpd 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://firewall.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 .example.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.edu
www.example.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 httpd 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 exemple, les lignes suivantes n'autoriseront ´┐Ż acc´┐Żder ´┐Ż un contenu via votre serveur mandataire que les h´┐Żtes appartenant ´┐Ż votre-reseau.example.com :

<Proxy *>
  Require host 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>

Diff´┐Żrences avec la section de configuration Location

Une URL d'arri´┐Żre-plan sera concern´┐Że par le conteneur Proxy si elle commence par la url-avec-jokers, m´┐Żme si le dernier segment de chemin de la directive ne correspond qu'´┐Ż un pr´┐Żfixe de segment dee chemin de l'URL d'arri´┐Żre-plan. Par exemple, <Proxy http://example.com/foo> correspondra entre autres aux URLs http://example.com/foo, http://example.com/foo/bar, et http://example.com/foobar. La correspondance de l'URL finale diff´┐Żre du comportement de la section <Location> qui, pour le cas de cette note, traitera le segment de chemin final comme s'il se terminait par un slash.

Pour un contr´┐Żle plus fin de la correspondance des URL, voir la directive <ProxyMatch>.

Voir aussi

top

ProxyAddHeaders Directive

Description:Ajoute des informations ´┐Ż propos du mandataire aux en-t´┐Żtes X-Forwarded-*
Syntaxe:ProxyAddHeaders Off|On
D´┐Żfaut:ProxyAddHeaders On
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:Disponible depuis la version 2.3.10

Cette directive permet de passer au serveur d'arri´┐Żre-plan des informations ´┐Ż propos du mandataire via les en-t´┐Żtes HTTP X-Forwarded-For, X-Forwarded-Host et X-Forwarded-Server.

Utilit´┐Ż

Cette option n'est utile que dans le cas du mandat HTTP trait´┐Ż par mod_proxy_http.

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

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 ´┐Żl´┐Żments 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 news.example.com auctions.example.com friends.example.com

Notez qu'example suffirait aussi pour atteindre ces sites.

Hosts conviendrait aussi s'il ´┐Żtait r´┐Żf´┐Żrenc´┐Ż par adresse IP.

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 httpd 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, r´┐Żpertoire
Statut:Extension
Module:mod_proxy

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

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 minimale est de 512 octets.

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

Si elle est utilis´┐Że avec AJP, cette directive permet de d´┐Żfinir la taille maximale du paquet AJP en octets. Si la valeur sp´┐Żcifi´┐Że est sup´┐Żrieure ´┐Ż 65536, elle est corrig´┐Że et prend la valeur 65536. Si vous ne conservez pas la valeur par d´┐Żfaut, vous devez aussi modifier l'attribut packetSize de votre connecteur AJP du c´┐Żt´┐Ż de Tomcat ! L'attribut packetSize n'est disponible que dans Tomcat 5.5.20+ et 6.0.2+.

Il n'est normalement pas n´┐Żcessaire de modifier la taille maximale du paquet. Des probl´┐Żmes ont cependant ´┐Żt´┐Ż rapport´┐Żs avec la valeur par d´┐Żfaut lors de l'envoi de certificats ou de cha´┐Żnes de certificats.

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.

A partir de la version 2.4.8, les groupes nomm´┐Żs et les r´┐Żf´┐Żrences arri´┐Żres sont extraits et enregistr´┐Żs dans l'environnement avec leur nom en majuscules et pr´┐Żfix´┐Ż par "MATCH_". Ceci permet de r´┐Żf´┐Żrencer des URLs dans des expressions ou au sein de modules comme mod_rewrite. Pour ´┐Żviter toute confusion, les r´┐Żf´┐Żrences arri´┐Żres num´┐Żrot´┐Żes (non nomm´┐Żes) sont ignor´┐Żes. Vous devez utiliser ´┐Ż la place des groupes nomm´┐Żs.

<ProxyMatch ^http://(?<sitename>[^/]+)>
    Require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
</ProxyMatch>

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´┐Ż: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 httpd 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] [noquery]
Contexte:configuration du serveur, serveur virtuel, r´┐Żpertoire
Statut:Extension
Module:mod_proxy

Cette directive permet de 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.

Note : Cette directive ne peut pas ´┐Żtre utilis´┐Że dans un contexte de niveau r´┐Żpertoire.
En g´┐Żn´┐Żral, la directive ProxyRequests doit ´┐Żtre d´┐Żfinie ´┐Ż off lorsqu'on utilise la directive ProxyPass.

Le support des sockets de style Unix est fourni ; il suffit pour cela d'utiliser une URL cible pr´┐Żfix´┐Że par unix:/path/lis.sock|. Par exemple, pour mandater HTTP et cibler l'UDS /home/www/socket, vous devez utiliser unix:/home/www.socket|http://localhost/whatever/.

Note :Le chemin associ´┐Ż ´┐Ż l'URL unix: tient compte de la directive DefaultRuntimeDir.

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

<Location /mirror/foo/>
    ProxyPass http://backend.example.com/
</Location>

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.

La syntaxe alternative suivante est valide, bien qu'elle puisse induire une d´┐Żgradation des performances lorsqu'elle est pr´┐Żsente en tr´┐Żs grand nombre. Elle poss´┐Żde l'avantage de permettre un contr´┐Żle dynamique via l'interface Balancer Manager :

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

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 :

<Location /mirror/foo/>
    ProxyPass http://backend.example.com/
</Location>
<Location /mirror/foo/i>
    ProxyPass !
</Location>
ProxyPass /mirror/foo/i !
ProxyPass /mirror/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 ´┐Żvalu´┐Żes dans l'ordre de leur apparition dans le fichier de configuration. La premi´┐Żre r´┐Żgle qui correspond s'applique. Vous devez donc en g´┐Żn´┐Żral classer les r´┐Żgles ProxyPass qui entrent en conflit de l'URL la plus longue ´┐Ż la plus courte. Dans le cas contraire, les r´┐Żgles situ´┐Żes apr´┐Żs une r´┐Żgle dont l'URL correspond au d´┐Żbut de leur propre URL seront ignor´┐Żes. Notez que tout ceci est en relation avec le partage de workers. Par contre, on ne peut placer qu'une seule directive ProxyPass dans une section Location, et c'est la section la plus sp´┐Żcifique qui l'emportera.

Pour les m´┐Żmes raisons, les exclusions doivent se situer avant les directives ProxyPass g´┐Żn´┐Żrales.

Depuis la version 2.1 du serveur HTTP Apache, mod_proxy supporte les groupements de connexions vers un serveur d'arri´┐Żre-plan. Les connexions cr´┐Ż´┐Żes ´┐Ż la demande peuvent ´┐Żtre enregistr´┐Żes dans un groupement pour une utilisation ult´┐Żrieure. La taille du groupe ainsi que d'autres caract´┐Żristiques peuvent ´┐Żtre d´┐Żfinies via la directive ProxyPass au moyen de param´┐Żtres cl´┐Ż=valeur dont la description fait l'objet du tableau ci-dessous.

Par d´┐Żfaut, mod_proxy permet et met en r´┐Żserve le nombre maximum de connexions pouvant ´┐Żtre utilis´┐Żes simultan´┐Żment par le processus enfant concern´┐Ż du serveur web. Le param´┐Żtre max permet de r´┐Żduire cette valeur par d´┐Żfaut. Le param´┐Żtre ttl, quant ´┐Ż lui, permet de d´┐Żfinir une dur´┐Że de vie optionnelle ; les connexions qui n'ont pas ´┐Żt´┐Ż utilis´┐Żes pendant au moins ttl secondes seront ferm´┐Żes. ttl permet aussi d'emp´┐Żcher l'utilisation d'une connexion susceptible d'´┐Żtre ferm´┐Że suite ´┐Ż une fin de vie de connexion persistante sur le serveur d'arri´┐Żre-plan.

Le groupement de connexions est maintenu au niveau de chaque processus enfant du serveur web, et max, ainsi que les autres param´┐Żtres, ne font l'objet d'aucune coordination entre les diff´┐Żrents processus enfants, sauf si un seul processus enfant est autoris´┐Ż par la configuration ou la conception du module multi-processus (MPM).

Exemple

ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300
Param´┐Żtres de BalancerMember
Param´┐Żtre D´┐Żfaut Description
min 0 Nombre minimum d'entr´┐Żes dans le pool de connexions, distinct du nombre de connexions effectif. La valeur par d´┐Żfaut ne doit ´┐Żtre modifi´┐Że que dans des circonstances particuli´┐Żres o´┐Ż la m´┐Żmoire associ´┐Że aux connexions avec le serveur d'arri´┐Żre-plan doit ´┐Żtre pr´┐Żallou´┐Że ou r´┐Żserv´┐Że dans le tas.
max 1...n Nombre maximum de connexions autoris´┐Żes vers le serveur d'arri´┐Żre-plan. La valeur par d´┐Żfaut correspond au nombre de threads par processus pour le MPM (Module Multi Processus) actif. La valeur sera toujours 1 pour le MPM Prefork, alors qu'elle d´┐Żpendra de la d´┐Żfinition de la directive ThreadsPerChild pour les autres MPMs.
smax max Les entr´┐Żes du pool de connexions conserv´┐Żes au del´┐Ż de cette limite sont lib´┐Żr´┐Żes au cours de certaines op´┐Żrations si elles n'ont pas ´┐Żt´┐Ż utilis´┐Żes au cours de leur dur´┐Że de vie, d´┐Żfinie par le param´┐Żtre ttl. Si l'entr´┐Że du pool de connexions est associ´┐Że ´┐Ż une connexion, cette derni´┐Żre sera ferm´┐Że. La valeur par d´┐Żfaut ne doit ´┐Żtre modifi´┐Że que dans des circonstances particuli´┐Żres o´┐Ż les entr´┐Żes du pool de connexions et toutes connexions associ´┐Żes qui ont d´┐Żpass´┐Ż leur dur´┐Że de vie doivent ´┐Żtre lib´┐Żr´┐Żes ou ferm´┐Żes de mani´┐Żre plus autoritaire.
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 httpd 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 httpd 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 httpd 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'.
iobuffersize 8192 Permet de d´┐Żfinir la taille du tampon d'entr´┐Żes/sorties du bloc-notes interne. Cette cl´┐Ż vous permet d'outrepasser la directive ProxyIOBufferSize pour un serveur cible sp´┐Żcifique. La valeur doit ´┐Żtre au minimum 512 ou d´┐Żfinie ´┐Ż 0 pour la valeur par d´┐Żfaut du syst´┐Żme de 8192.
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 va "tester" la connexion vers le serveur d'arri´┐Żre-plan avant de transmettre la requ´┐Żte. Avec AJP, mod_proxy_ajp envoie une requ´┐Żte CPING sur la connexion ajp13 (impl´┐Żment´┐Ż sur Tomcat 3.3.2+, 4.1.28+ et 5.0.13+). Avec HTTP, mod_proxy_http envoie 100-Continue au serveur d'arri´┐Żre-plan (seulement avecHTTP/1.1 - pour les serveurs d'arri´┐Żre-plan non HTTP/1.1, cette cl´┐Ż ne produit aucun effet). Dans les deux cas, ce param´┐Żtre correspond au d´┐Żlai en secondes pour l'attente de la r´┐Żponse. Cette fonctionnalit´┐Ż a ´┐Żt´┐Ż ajout´┐Że pour ´┐Żviter les probl´┐Żmes avec les serveurs d'arri´┐Żre-plan bloqu´┐Żs ou surcharg´┐Żs. 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. Le d´┐Żlai peut aussi ´┐Żtre d´┐Żfini en millisecondes en ajoutant le suffixe ms.
receivebuffersize 0 D´┐Żfinit la taille du tampon r´┐Żseau explicite (TCP/IP) pour les connexions mandat´┐Żes. Cette cl´┐Ż vous permet d'outrepasser la directive ProxyReceiveBufferSize pour un serveur cible sp´┐Żcifique. Sa valeur doit ´┐Żtre au minimum 512 ou d´┐Żfinie ´┐Ż 0 pour la valeur par d´┐Żfaut du syst´┐Żme.
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 httpd 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 implique de 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: le serveur cible est d´┐Żsactiv´┐Ż et n'accepte aucune requ´┐Żte.
S: le serveur cible est arr´┐Żt´┐Ż.
I: le serveur cible est en mode "erreurs ignor´┐Żes", et sera toujours consid´┐Żr´┐Ż comme disponible.
H: le serveur cible est en mode d'attente et ne sera utilis´┐Ż que si aucun autre serveur n'est disponible.
E: le serveur cible est en erreur.
N: le serveur cible est en mode vidage, n'acceptera que les sessions persistantes qui lui appartiennent, et refusera toutes les autres requ´┐Żtes.
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 httpd 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 du pool de connexions associ´┐Żes en secondes. Une fois cette limite atteinte, une connexion ne sera pas r´┐Żutilis´┐Że ; elle sera ferm´┐Że apr´┐Żs un d´┐Żlai variable.

Si l'URL de la directive Proxy 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´┐Żtres du r´┐Żpartiteur
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, 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.
Disponible depuis la version 2.4.4 du serveur HTTP Apache.
stickysessionsep "." D´┐Żfinit le caract´┐Żre de s´┐Żparation dans le cookie de session. Certains serveurs d'application d'arri´┐Żre-plan n'utilisent pas le caract´┐Żre '.' comme s´┐Żparateur. Par exemple le serveur Oracle Weblogic utilise le caract´┐Żre '!'. Cette option permet d'attribuer au caract´┐Żre de s´┐Żparation la valeur appropri´┐Że. Si elle est d´┐Żfinie ´┐Ż 'Off', aucun caract´┐Żre de s´┐Żparation n'est utilis´┐Ż.
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 - Une liste de codes d'´┐Żtat HTTP s´┐Żpar´┐Żs par des virgules. Si ce param´┐Żtre est pr´┐Żsent, le worker se mettra en erreur si le serveur d'arri´┐Żre-plan renvoie un des codes d'´┐Żtat sp´┐Żcifi´┐Żs dans la liste. La r´┐Żcup´┐Żration du worker s'effectue comme dans le cas des autres erreurs de worker.
failontimeout Off Si ce param´┐Żtre est d´┐Żfini ´┐Ż "On", un d´┐Żlai d'attente d´┐Żpass´┐Ż en entr´┐Że/sortie apr´┐Żs envoi d'une requ´┐Żte au serveur d'arri´┐Żre-plan va mettre le processus en ´┐Żtat d'erreur. La sortie de cet ´┐Żtat d'erreur se passe de la m´┐Żme fa´┐Żon que pour les autres erreurs.
Disponible ´┐Ż partir de la version 2.4.5 du serveur HTTP Apache.
nonce <auto> Le nombre ´┐Ż usage unique de protection utilis´┐Ż dans la page de l'application balancer-manager. Par d´┐Żfaut, la protection de la page est assur´┐Że par un nombre ´┐Ż usage unique automatique ´┐Ż base d'UUID. Si une valeur est pr´┐Żcis´┐Że, elle sera utilis´┐Że comme nombre ´┐Ż usage unique. La valeur None d´┐Żsactive la v´┐Żrification du nombre ´┐Ż usage unique.

Note

En plus du nombre ´┐Ż usage unique, la page de l'application balancer-manager peut ´┐Żtre prot´┐Żg´┐Że par une ACL.

growth 0 Nombre de membres suppl´┐Żmentaires que l'on peut ajouter ´┐Ż ce r´┐Żpartiteur en plus de ceux d´┐Żfinis au niveau de la configuration.
forcerecovery On Force la relance imm´┐Żdiate de tous les membres sans tenir compte de leur param´┐Żtre retry dans le cas o´┐Ż ils sont tous en ´┐Żtat d'erreur. Il peut cependant arriver qu'un membre d´┐Żj´┐Ż surcharg´┐Ż entre dans une situation critique si la relance de tous les membres est forc´┐Że sans tenir compte du param´┐Żtre retry de chaque membre. Dans ce cas, d´┐Żfinissez ce param´┐Żtre ´┐Ż Off.
Disponible depuis la version 2.4.2 du serveur HTTP Apache.

Exemple de configuration d'un r´┐Żpartiteur de charge

ProxyPass /special-area http://special.example.com smax=5 max=10
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On
<Proxy balancer://mycluster>
    BalancerMember ajp://1.2.3.4:8009
    BalancerMember ajp://1.2.3.5:8009 loadfactor=20
    # Less powerful server, don't send as many requests there,
    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
    # The server below is on hot standby
    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.

Par d´┐Żfaut, mod_proxy inclut la cha´┐Żne de param´┐Żtres lors de la g´┐Żn´┐Żration de la variable d'environnement SCRIPT_FILENAME. Le mot-cl´┐Ż optionnel noquery (disponible ´┐Ż partir de la version 2.4.1) permet d'exclure cette cha´┐Żne.

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 sera de m´┐Żme dans une section <LocationMatch> ; cependant, ProxyPass n'interpr´┐Żte pas les expressions rationnelles, et il sera ici n´┐Żcessaire d'utiliser la directive ProxyPassMatch ´┐Ż la place.

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].

Le mot-cl´┐Ż optionnel interpolate, 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. Notez aussi que l'interpolation n'est pas support´┐Że dans la partie protocole d'une URL. La d´┐Żtermination dynamique du protocole peut ´┐Żtre effectu´┐Że ´┐Ż l'aide de mod_rewrite comme dans l'exemple suivant :

RewriteEngine On

RewriteCond %{HTTPS} =off
RewriteRule . - [E=protocol:http]
RewriteCond %{HTTPS} =on
RewriteRule . - [E=protocol:https]

RewriteRule ^/mirror/foo/(.*) %{ENV:protocol}://backend.example.com/$1 [P]
ProxyPassReverse  /mirror/foo/ http://backend.example.com/
ProxyPassReverse  /mirror/foo/ https://backend.example.com/
top

ProxyPassInherit Directive

Description:H´┐Żritage des directives ProxyPass d´┐Żfinies au niveau du serveur principal
Syntaxe:ProxyPassInherit On|Off
D´┐Żfaut:ProxyPassInherit On
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:Disponible ´┐Ż partir de la version 2.4.5 du serveur HTTP Apache.

Cette directive permet ´┐Ż un serveur virtuel d'h´┐Żriter des directives ProxyPass d´┐Żfinies au niveau du serveur principal. Si vous utilisez la fonctionnalit´┐Ż de modifications dynamiques du Balancer Manager, cette directive peut causer des probl´┐Żmes et des comportements inattendus et doit donc ´┐Żtre d´┐Żsactiv´┐Że.

Les valeurs d´┐Żfinies au niveau du serveur principal constituent les valeurs par d´┐Żfaut pour tous les serveurs virtuels.

La d´┐Żsactivation de ProxyPassInherit d´┐Żsactive aussi la directive BalancerInherit.

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

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.

Note : Cette directive ne peut pas ´┐Żtre utilis´┐Że dans un contexte de niveau r´┐Żpertoire.

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´┐Ż.

Dans 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 du mandataire inverse plus flexible, voyez 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 httpd ajuste l'URL dans les en-t´┐Żtes Location, Content-Location et URI des r´┐Żponses de redirection HTTP. Ceci est essentiel lorsqu'Apache httpd 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 httpd ne r´┐Ż´┐Żcrira ni les autres en-t´┐Żtes de r´┐Żponse, ni par d´┐Żfaut 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. Pour r´┐Ż´┐Żcrire un contenu HTML afin qu'il corresponde au mandataire, vous devez charger et activer le module mod_proxy_html.

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         /mirror/foo/ http://backend.example.com/
ProxyPassReverse  /mirror/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain  backend.example.com  public.example.com
ProxyPassReverseCookiePath  /  /mirror/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 httpd 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, en combinaison avec la directive ProxyPassInterpolateEnv, permet l'interpolation des variables d'environnement sp´┐Żcifi´┐Żes en utilisant le format ${VARNAME} Notez que l'interpolation n'est pas support´┐Że dans la partie protocole d'une URL.

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 sera probablement pas celui attendu car ProxyPassReverse va interpr´┐Żter l'expression rationnelle litt´┐Żralement comme un chemin ; si besoin est dans ce cas, d´┐Żfinissez 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, r´┐Żpertoire
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:Utilisable dans un contexte de r´┐Żpertoire depuis la version 2.3.3.

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. Lorsqu'on utilise https, les requ´┐Żtes sont redirig´┐Żes par le mandataire distant en utilisant la m´┐Żthode HTTP CONNECT.

Exemple

ProxyRemote http://goodguys.example.com/ http://mirrorguys.example.com:8000
ProxyRemote * http://cleverproxy.localdomain
ProxyRemote ftp http://ftpproxy.mydomain: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 du premier argument qui 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 httpd. 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 ´┐Żgalement ´┐Żtre charg´┐Żs dans le serveur.

Pour activer la fonctionnalit´┐Ż de mandataire sur les sites chiffr´┐Żs en HTTPS, le module mod_proxy_connect doit ´┐Żgalement ´┐Żtre charg´┐Ż dans le serveur.

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 du serveur HTTP 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´┐Żfinis 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

ProxySourceAddress Directive

Description:D´┐Żfinit l'adresse IP locale pour les connexions mandat´┐Żes sortantes
Syntaxe:ProxySourceAddress adresse
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_proxy
Compatibilit´┐Ż:Disponible depuis la version 2.3.9

Cette directive permet de d´┐Żfinir une adresse IP locale sp´┐Żcifique ´┐Ż laquelle faire r´┐Żf´┐Żrence lors d'une connexion ´┐Ż un serveur d'arri´┐Żre-plan.

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

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 fournie 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.