1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1792092:1799460 (outdated) -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mod_proxy.xml.meta">
27 <name>mod_proxy</name>
28 <description>Serveur mandataire/passerelle multi-protocole</description>
29 <status>Extension</status>
30 <sourcefile>mod_proxy.c</sourcefile>
31 <identifier>proxy_module</identifier>
34 <note type="warning"><title>Avertissement</title>
35 <p>N'activez pas la fonctionnalité de mandataire avec la directive
36 <directive module="mod_proxy">ProxyRequests</directive> avant
37 d'avoir <a href="#access">sécurisé votre serveur</a>. Les serveurs
38 mandataires ouverts sont dangereux pour votre réseau,
39 mais aussi pour l'Internet au sens large.</p>
42 <p><module>mod_proxy</module> et ses modules associés implémentent
43 un mandataire/passerelle pour le serveur HTTP Apache, et supportent
44 de nombreux protocoles courants, ainsi que plusieurs algorithmes de
45 répartition de charge. Le support de protocoles et d'algorithmes de
46 répartition de charge supplémentaires peut être assuré par des
49 <p>Un jeu de modules chargés dans le serveur permet de fournir les
50 fonctionnalités souhaitées. Ces modules peuvent être inclus
51 statiquement à la compilation, ou dynamiquement via la directive
52 <directive module="mod_so">LoadModule</directive>. Ce jeu de module
56 <li><module>mod_proxy</module>, qui fournit les fonctionnalités de
57 base d'un mandataire</li>
59 <li><module>mod_proxy_balancer</module> et un ou plusieurs modules
60 de répartition, si la répartition de charge doit être mise en
61 oeuvre (Voir la documentation de
62 <module>mod_proxy_balancer</module> pour plus de détails).</li>
64 <li>un ou plusieurs modules de types de mandataire, ou protocoles
68 <tr><th>Protocole</th><th>Module</th></tr>
69 <tr><td>AJP13 (Protocole Apache JServe version
70 1.3)</td><td><module>mod_proxy_ajp</module></td></tr>
72 SSL)</td><td><module>mod_proxy_connect</module></td></tr>
73 <tr><td>FastCGI</td><td><module>mod_proxy_fcgi</module></td></tr>
74 <tr><td>ftp</td><td><module>mod_proxy_ftp</module></td></tr>
75 <tr><td>HTTP/0.9, HTTP/1.0, et
76 HTTP/1.1</td><td><module>mod_proxy_http</module></td></tr>
77 <tr><td>SCGI</td><td><module>mod_proxy_scgi</module></td></tr>
78 <tr><td>WS and WSS (Web-sockets)</td><td><module>mod_proxy_wstunnel</module></td></tr>
83 <p>En outre, d'autres modules fournissent des fonctionnalités
84 étendues. <module>mod_cache</module> et ses modules associés
85 fournissent la mise en cache. Les directives <code>SSLProxy*</code>
86 du module <module>mod_ssl</module> permettent de contacter des
87 serveurs distants en utilisant le protocole SSL/TLS. Ces modules
88 additionnels devront être chargés et configurés pour pouvoir
89 disposer de ces fonctionnalités.</p>
91 <seealso><module>mod_cache</module></seealso>
92 <seealso><module>mod_proxy_ajp</module></seealso>
93 <seealso><module>mod_proxy_balancer</module></seealso>
94 <seealso><module>mod_proxy_connect</module></seealso>
95 <seealso><module>mod_proxy_fcgi</module></seealso>
96 <seealso><module>mod_proxy_ftp</module></seealso>
97 <seealso><module>mod_proxy_hcheck</module></seealso>
98 <seealso><module>mod_proxy_http</module></seealso>
99 <seealso><module>mod_proxy_scgi</module></seealso>
100 <seealso><module>mod_proxy_wstunnel</module></seealso>
101 <seealso><module>mod_ssl</module></seealso>
103 <section id="forwardreverse"><title>Mandataires directs et
104 mandataires/passerelles inverses</title>
105 <p>Le serveur HTTP Apache peut être configuré dans les deux modes mandataire
106 <dfn>direct</dfn> et mandataire <dfn>inverse</dfn> (aussi nommé
107 mode <dfn>passerelle</dfn>).</p>
109 <p>Un <dfn>mandataire direct</dfn> standard est un serveur
110 intermédiaire qui s'intercale entre le client et le <em>serveur
111 demandé</em>. Pour obtenir un contenu hébergé par
112 le serveur demandé, le client envoie une requête au
113 mandataire en nommant le serveur demandé comme
114 cible, puis le mandataire extrait le contenu depuis le
115 serveur demandé et le renvoie enfin au client. Le client doit être
116 configuré de manière appropriée pour pouvoir utiliser le mandataire
117 direct afin d'accéder à d'autres sites.</p>
119 <p>L'accès à Internet depuis des clients situés derrière un
120 pare-feu est une utilisation typique du mandataire direct. Le
121 mandataire direct peut aussi utiliser la mise en cache (fournie
122 par <module>mod_cache</module>) pour réduire la charge du
125 <p>La fonctionnalité de mandataire direct est activée via la
126 directive <directive module="mod_proxy">ProxyRequests</directive>.
127 Comme les mandataires directs permettent aux clients d'accéder à
128 des sites quelconques via votre serveur et de dissimuler leur
129 véritable origine, il est indispensable de <a
130 href="#access">sécuriser votre serveur</a> de façon à ce que seuls
131 les clients autorisés puissent accéder à votre serveur avant
132 d'activer la fonctionnalité de mandataire direct.</p>
134 <p>Un <dfn>mandataire inverse</dfn> (ou <dfn>passerelle</dfn>),
135 quant à lui, apparaît au client comme un serveur web standard.
136 Aucune configuration particulière du client n'est nécessaire. Le
137 client adresse ses demandes de contenus ordinaires dans l'espace
138 de nommage du mandataire inverse. Ce dernier décide alors où
139 envoyer ces requêtes, et renvoie le contenu au client comme s'il
140 l'hébergeait lui-même.</p>
142 <p>L'accès d'utilisateurs depuis Internet vers un serveur situé
143 derrière un pare-feu est une utilisation typique du mandataire
144 inverse. On peut aussi utiliser les mandataires inverses pour
145 mettre en oeuvre une répartition de charge entre plusieurs
146 serveurs en arrière-plan, ou fournir un cache pour un serveur
147 d'arrière-plan plus lent. Les mandataires inverses peuvent aussi
148 tout simplement servir à rassembler plusieurs serveurs dans le
149 même espace de nommage d'URLs.</p>
151 <p>La fonctionnalité de mandataire inverse est activée via la
152 directive <directive module="mod_proxy">ProxyPass</directive> ou
153 le drapeau <code>[P]</code> de la directive <directive
154 module="mod_rewrite">RewriteRule</directive>. Il n'est
155 <strong>pas</strong> nécessaire de définir <directive
156 module="mod_proxy">ProxyRequests</directive> pour configurer
157 un mandataire inverse.</p>
158 </section> <!-- /forwardreverse -->
160 <section id="examples"><title>Exemples simples</title>
162 <p>Les exemples ci-dessous illustrent de manière très basique la
163 mise en oeuvre de la fonctionnalité de mandataire et ne sont là que
164 pour vous aider à démarrer. Reportez-vous à la documentation de
165 chaque directive.</p>
167 <p>Si en outre, vous désirez activer la mise en cache, consultez la
168 documentation de <module>mod_cache</module>.</p>
170 <example><title>Mandataire inverse</title>
171 <highlight language="config">
172 ProxyPass "/foo" "http://foo.example.com/bar"
173 ProxyPassReverse "/foo" "http://foo.example.com/bar"
177 <example><title>Mandataire direct</title>
178 <highlight language="config">
183 Require host internal.example.com
187 </section> <!-- /examples -->
189 <section id="handler"><title>Accès via un gestionnaire</title>
191 <p>Vous pouvez aussi forcer le traitement d'une requête en tant que
192 requête de mandataire inverse en créant un gestionnaire de transfert
193 approprié. Dans l'exemple suivant, toutes les requêtes pour
194 des scripts PHP seront transmises au serveur FastCGI
195 spécifié via un mandat inverse :
198 <example><title>Scripts PHP et mandataire inverse</title>
199 <highlight language="config">
200 <FilesMatch "\.php$">
201 SetHandler "proxy:unix:/path/to/app.sock|fcgi://localhost/"
206 <p>Cette fonctionnalité est disponible à partir de la version
207 2.4.10 du serveur HTTP Apache.</p>
209 </section> <!-- /handler -->
211 <section id="workers"><title>Workers</title>
212 <p>Le mandataire gère la configuration et les paramètres de
213 communication des serveurs originaux au sein d'objets nommés
214 <dfn>workers</dfn>. Deux types de worker sont fournis : le worker
215 par défaut du mandataire direct et le worker par défaut du
216 mandataire inverse. Il est aussi possible de définir explicitement
217 des workers supplémentaires.</p>
219 <p>Les deux workers par défaut possèdent une configuration figée
220 et seront utilisés si aucun autre worker ne correspond à la
221 requête. Ils n'utilisent ni les jeux de connexions (connection
223 connexions HTTP persistantes (Keep-Alive). En effet, les
224 connexions TCP vers le serveur original sont fermées et ouvertes
225 pour chaque requête.</p>
227 <p>Les workers définis explicitement sont identifiés par leur URL.
228 Ils sont en général définis via les directives <directive
229 module="mod_proxy">ProxyPass</directive> ou <directive
230 module="mod_proxy">ProxyPassMatch</directive> lorsqu'on les
231 utilise dans le cadre d'un mandataire inverse :</p>
234 <highlight language="config">
235 ProxyPass "/example" "http://backend.example.com" connectiontimeout=5 timeout=30
240 <p>Cette directive va créer un worker associé à l'URL du serveur
241 original <code>http://backend.example.com</code>, qui utilisera les
242 valeurs de timeout données. Lorsqu'ils sont utilisés dans le cadre
243 d'un mandataire direct, les workers sont en général définis via la
244 directive <directive module="mod_proxy">ProxySet</directive>,</p>
247 <highlight language="config">
248 ProxySet http://backend.example.com connectiontimeout=5 timeout=30
253 <p>ou encore via les directives <directive
254 module="mod_proxy">Proxy</directive> et <directive
255 module="mod_proxy">ProxySet</directive> :</p>
257 <highlight language="config">
258 <Proxy http://backend.example.com>
259 ProxySet connectiontimeout=5 timeout=30
263 <p>L'utilisation de workers définis explicitement dans le mode
264 mandataire direct n'est pas très courante, car les mandataires
265 directs communiquent en général avec de nombreux serveurs
266 originaux. La création explicite de workers pour certains serveurs
267 originaux peut cependant s'avérer utile si ces serveurs sont
268 très souvent sollicités. A leur niveau, les workers explicitement
269 définis ne possèdent aucune notion de mandataire direct ou
270 inverse. Ils encapsulent un concept de communication commun avec
271 les serveurs originaux. Un worker créé via la directive <directive
272 module="mod_proxy">ProxyPass</directive> pour être utilisé dans le
273 cadre d'un mandataire inverse sera aussi utilisé dans le cadre
274 d'un mandataire directe chaque fois que l'URL vers le serveur
275 original correspondra à l'URL du worker, et vice versa.</p>
277 <p>L'URL qui identifie un worker correspond à l'URL de son serveur
278 original, y compris un éventuel chemin donné :</p>
280 <highlight language="config">
281 ProxyPass "/examples" "http://backend.example.com/examples"
282 ProxyPass "/docs" "http://backend.example.com/docs"
285 <p>Dans cet exemple, deux workers différents sont définis, chacun
286 d'eux utilisant des configurations et jeux de connexions
289 <note type="warning"><title>Partage de workers</title>
290 <p>Le partage de workers intervient lorsque les URLs des workers
291 s'entrecoupent, ce qui arrive lorsque l'URL d'un worker
292 correspond au début de l'URL d'un autre worker défini plus loin
293 dans le fichier de configuration. Dans l'exemple suivant,</p>
295 <highlight language="config">
296 ProxyPass "/apps" "http://backend.example.com/" timeout=60
297 ProxyPass "/examples" "http://backend.example.com/examples" timeout=10
300 <p>le second worker n'est pas vraiment créé. C'est le premier
301 worker qui est en fait utilisé. L'avantage de ceci réside dans
302 le fait qu'il n'existe qu'un seul jeu de connexions, ces
303 dernières étant donc réutilisées plus souvent. Notez que tous
304 les attributs de configuration définis explicitement pour le
305 deuxième worker seront ignorés, ce qui sera journalisé en tant
306 qu'avertissement. Ainsi, dans l'exemple ci-dessus, la valeur de
307 timeout retenue pour l'URL <code>/exemples</code> sera
308 <code>60</code>, et non <code>10</code> !</p>
310 <p>Si vous voulez empêcher le partage de workers, classez vos
311 définitions de workers selon la longueur des URLs, de la plus
312 longue à la plus courte. Si au contraire vous voulez favoriser
313 ce partage, utilisez l'ordre de classement inverse. Voir aussi
314 l'avertissement à propos de l'ordre de classement des directives
315 <directive module="mod_proxy">ProxyPass</directive>.</p>
317 </note> <!-- /worker_sharing -->
319 <p>Les workers définis explicitement sont de deux sortes :
320 <dfn>workers directs</dfn> et <dfn>workers de répartition (de
321 charge)</dfn>. Ils supportent de nombreux attributs de
322 configuration importants décrits dans la directive <directive
323 module="mod_proxy">ProxyPass</directive>. Ces mêmes attributs
324 peuvent aussi être définis via la directive <directive
325 module="mod_proxy">ProxySet</directive>.</p>
327 <p>Le jeu d'options disponibles pour un worker direct dépend du
328 protocole spécifié dans l'URL du serveur original. Les protocoles
329 disponibles comprennent <code>ajp</code>, <code>fcgi</code>,
330 <code>ftp</code>, <code>http</code> et <code>scgi</code>.</p>
332 <p>Les workers de répartition sont des workers virtuels qui
333 utilisent les workers directs, connus comme faisant partie de leurs
334 membres, pour le traitement effectif des requêtes. Chaque
335 répartiteur peut comporter plusieurs membres. Lorsqu'il traite une
336 requête, il choisit un de ses membres en fonction de l'algorithme
337 de répartition de charge défini.</p>
339 <p>Un worker de répartition est créé si son URL de worker comporte
340 <code>balancer</code> comme indicateur de protocole. L'URL du
341 répartiteur permet d'identifier de manière unique le worker de
342 répartition. La directive <directive
343 module="mod_proxy">BalancerMember</directive> permet d'ajouter des
344 membres au répartiteur.</p>
346 <note><title>Résolution DNS pour les domaines originaux</title>
347 <p>La résolution DNS s'effectue lorsque le socket vers le
348 domaine original est créé pour la première fois. Lorsque le pooling de
349 connexions est utilisé, chaque domaine d'arrière-plan n'est résolu qu'une
350 seule fois pour chaque processus enfant, et cette résolution est réutilisée
351 pour toutes les connexions ultérieures jusqu'à ce que le processus enfant
352 soit recyclé. Ce comportement doit être pris en considération lorsqu'on
353 planifie des tâches de maintenance du DNS impactant les domaines
354 d'arrière-plan. Veuillez aussi vous reporter aux paramètres de la
355 directive <directive module="mod_proxy">ProxyPass</directive> pour plus de
356 détails à propos de la réutilisation des connexions.
360 </section> <!-- /workers -->
362 <section id="access"><title>Contrôler l'accès à votre
364 <p>Vous pouvez restreindre l'accès à votre mandataire via le bloc
365 de contrôle <directive
366 module="mod_proxy" type="section">Proxy</directive> comme dans
367 l'exemple suivant :</p>
369 <highlight language="config">
375 <p>Pour plus de détails sur les directives de contrôle d'accès,
376 voir la documentation du module
377 <module>mod_authz_host</module>.</p>
379 <p>Restreindre l'accès de manière stricte est essentiel si vous
380 mettez en oeuvre un mandataire direct (en définissant la directive
381 <directive module="mod_proxy">ProxyRequests</directive> à "on").
382 Dans le cas contraire, votre serveur pourrait être utilisé par
383 n'importe quel client pour accéder à des serveurs quelconques,
384 tout en masquant sa véritable identité. Ceci représente un danger
385 non seulement pour votre réseau, mais aussi pour l'Internet au
386 sens large. Dans le cas de la mise en oeuvre d'un mandataire
387 inverse (en utilisant la directive <directive
388 module="mod_proxy">ProxyPass</directive> avec <code>ProxyRequests Off</code>), le contrôle
389 d'accès est moins critique car les clients ne peuvent contacter
390 que les serveurs que vous avez spécifiés.</p>
392 <p><strong>Voir aussi</strong> la variable d'environnement <a
393 href="mod_proxy_http.html#env">Proxy-Chain-Auth</a>.</p>
395 </section> <!-- /access -->
397 <section id="startup"><title>Ralentissement au démarrage</title>
398 <p>Si vous utilisez la directive <directive module="mod_proxy"
399 >ProxyBlock</directive>, les noms d'hôtes sont résolus en adresses
400 IP puis ces dernières mises en cache au cours du démarrage
401 à des fins de tests de comparaisons ultérieurs. Ce processus peut
402 durer plusieurs secondes (ou d'avantage) en fonction de la vitesse
403 à laquelle s'effectue la résolution des noms d'hôtes.</p>
404 </section> <!-- /startup -->
406 <section id="intranet"><title>Mandataire en Intranet</title>
407 <p>Un serveur mandataire Apache httpd situé à l'intérieur d'un Intranet
408 doit faire suivre les requêtes destinées à un serveur externe à
409 travers le pare-feu de l'entreprise (pour ce faire, définissez la
410 directive <directive module="mod_proxy">ProxyRemote</directive> de
411 façon à ce qu'elle fasse suivre le <var>protocole</var> concerné
412 vers le mandataire du pare-feu). Cependant, lorsqu'il doit accéder
413 à des ressources situées dans l'Intranet, il peut se passer du
414 pare-feu pour accéder aux serveurs. A cet effet, la directive
415 <directive module="mod_proxy">NoProxy</directive> permet de
416 spécifier quels hôtes appartiennent à l'Intranet et peuvent donc
417 être accédés directement.</p>
419 <p>Les utilisateurs d'un Intranet ont tendance à oublier le nom du
420 domaine local dans leurs requêtes WWW, et demandent par exemple
421 "http://un-serveur/" au lieu de
422 <code>http://un-serveur.example.com/</code>. Certains serveurs
423 mandataires commerciaux acceptent ce genre de requête et les
424 traitent simplement en utilisant un nom de domaine local
425 implicite. Lorsque la directive <directive
426 module="mod_proxy">ProxyDomain</directive> est utilisée et si le
427 serveur est <a href="#proxyrequests">configuré comme
428 mandataire</a>, Apache httpd peut renvoyer une réponse de redirection et
429 ainsi fournir au client l'adresse de serveur correcte,
430 entièrement qualifiée. C'est la méthode à privilégier car le
431 fichier des marque-pages de l'utilisateur contiendra alors des
432 noms de serveurs entièrement qualifiés.</p>
433 </section> <!-- /intranet -->
435 <section id="envsettings"><title>Ajustements relatifs au
437 <p>Pour les cas où <module>mod_proxy</module> envoie des requêtes
438 vers un serveur qui n'implémente pas correctement les connexions
439 persistantes ou le protocole HTTP/1.1, il existe deux variables
440 d'environnement qui permettent de forcer les requêtes à utiliser
441 le protocole HTTP/1.0 avec connexions non persistantes. Elles
442 peuvent être définies via la directive <directive
443 module="mod_env">SetEnv</directive>.</p>
445 <p>Il s'agit des variables <code>force-proxy-request-1.0</code> et
446 <code>proxy-nokeepalive</code>.</p>
448 <highlight language="config">
449 <Location "/buggyappserver/">
450 ProxyPass "http://buggyappserver:7001/foo/"
451 SetEnv force-proxy-request-1.0 1
452 SetEnv proxy-nokeepalive 1
456 <p>A partir de la version 2.4.26 du serveur HTTP Apache, la définition de
457 la variable d'environnement "no-proxy" permet de désactiver
458 <module>mod_proxy</module> dans le traitement de la requête courante.
459 Cette variable doit être définie via la directive <directive
460 module="mod_setenvif">SetEnvIf</directive> car la directive <directive
461 module="mod_env">SetEnv</directive> n'est pas évaluée assez tôt.</p>
463 </section> <!-- /envsettings -->
465 <section id="request-bodies"><title>Corps de requêtes</title>
467 <p>Certaines méthodes de requêtes comme POST comportent un corps de
468 requête. Le protocole HTTP stipule que les requêtes qui comportent
469 un corps doivent soit utiliser un codage de transmission
470 fractionnée (chunked transfer encoding), soit envoyer un en-tête de requête
471 <code>Content-Length</code>. Lorsqu'il fait suivre ce genre de
472 requête vers le serveur demandé, <module>mod_proxy_http</module>
473 s'efforce toujours d'envoyer l'en-tête <code>Content-Length</code>.
474 Par contre, si la taille du corps est importante, et si la requête
475 originale utilise un codage à fractionnement, ce dernier peut aussi
476 être utilisé dans la requête montante. Ce comportement peut être
477 contrôlé à l'aide de <a href="../env.html">variables
478 d'environnement</a>. Ainsi, si elle est définie, la variable
479 <code>proxy-sendcl</code> assure une compatibilité maximale avec les
480 serveurs demandés en imposant l'envoi de l'en-tête
481 <code>Content-Length</code>, alors que
482 <code>proxy-sendchunked</code> diminue la consommation de ressources
483 en imposant l'utilisation d'un codage à fractionnement.</p>
485 <p>Dans certaines circonstances, le serveur doit mettre en file
486 d'attente sur disque les corps de requêtes afin de satisfaire le
487 traitement demandé des corps de requêtes. Par exemple, cette mise en
488 file d'attente se produira si le corps original a été envoyé selon un
489 codage morcelé (et possède une taille importante), alors que
490 l'administrateur a demandé que les requêtes du serveur
491 d'arrière-plan soient envoyées avec l'en-tête Content-Length ou en
492 HTTP/1.0. Cette mise en file d'attente se produira aussi si le corps
493 de la requête contient déjà un en-tête Content-Length, alors que le
494 serveur est configuré pour filtrer les corps des requêtes entrantes.</p>
496 <p>La directive <directive
497 module="core">LimitRequestBody</directive> ne s'applique qu'aux
498 corps de requêtes que le serveur met en file d'attente sur disque.</p>
500 </section> <!-- /request-bodies -->
502 <section id="x-headers"><title>En-têtes de requête du mandataire
505 <p>Lorsqu'il est configuré en mode mandataire inverse (en utilisant
506 par exemple la directive <directive
507 module="mod_proxy">ProxyPass</directive>),
508 <module>mod_proxy_http</module> ajoute plusieurs en-têtes de requête
509 afin de transmettre des informations au serveur demandé. Ces
510 en-têtes sont les suivants :</p>
513 <dt><code>X-Forwarded-For</code></dt>
514 <dd>L'adresse IP du client.</dd>
515 <dt><code>X-Forwarded-Host</code></dt>
516 <dd>L'hôte d'origine demandé par le client dans l'en-tête de
517 requête HTTP <code>Host</code>.</dd>
518 <dt><code>X-Forwarded-Server</code></dt>
519 <dd>Le nom d'hôte du serveur mandataire.</dd>
522 <p>Ces en-têtes doivent être utilisés avec précautions sur le
523 serveur demandé, car ils contiendront plus d'une valeur (séparées
524 par des virgules) si la requête originale contenait déjà un de ces
525 en-têtes. Par exemple, vous pouvez utiliser
526 <code>%{X-Forwarded-For}i</code> dans la chaîne de format du journal
527 du serveur demandé pour enregistrer les adresses IP des clients
528 originaux, mais il est possible que vous obteniez plusieurs adresses
529 si la requête passe à travers plusieurs mandataires.</p>
531 <p>Voir aussi les directives <directive
532 module="mod_proxy">ProxyPreserveHost</directive> et <directive
533 module="mod_proxy">ProxyVia</directive> directives, qui permettent
534 de contrôler d'autres en-têtes de requête.</p>
536 <p>Note : Si vous devez ajouter des en-têtes particuliers à la
537 requête mandatée, utilisez la directive <directive
538 module="mod_headers">RequestHeader</directive>.</p>
540 </section> <!--/x-headers -->
543 <directivesynopsis type="section">
545 <description>Conteneur de directives s'appliquant à des ressources
546 mandatées</description>
547 <syntax><Proxy <var>url-avec-jokers</var>> ...</Proxy></syntax>
548 <contextlist><context>server config</context><context>virtual host</context>
552 <p>Les directives situées dans une section <directive
553 type="section">Proxy</directive> ne s'appliquent qu'au contenu
554 mandaté concerné. Les jokers de style shell sont autorisés.</p>
556 <p>Par exemple, les lignes suivantes n'autoriseront à accéder à un
557 contenu via votre serveur mandataire que les hôtes appartenant à
558 <code>votre-reseau.example.com</code> :</p>
560 <highlight language="config">
562 Require host votre-reseau.example.com
566 <p>Dans l'exemple suivant, tous les fichiers du répertoire
567 <code>foo</code> de <code>example.com</code> seront traités par le
568 filtre <code>INCLUDES</code> lorsqu'ils seront envoyés par
569 l'intermédiaire du serveur mandataire :</p>
571 <highlight language="config">
572 <Proxy http://example.com/foo/*>
573 SetOutputFilter INCLUDES
577 <p>Dans l'exemple suivant, les clients web possédant l'adresse IP
578 spécifiée seront autorisés à effectuer des requêtes
579 <code>CONNECT</code> pour accéder au serveur
580 <code>https://www.example.com/</code>, sous réserve que le module
581 <module>mod_proxy_connect</module> soit chargé.
584 <highlight language="config">
585 <Proxy www.example.com:443>
586 Require ip 192.168.0.0/16
590 <note><title>Différences avec la section de configuration Location</title>
591 <p>Une URL d'arrière-plan sera concernée par le conteneur Proxy si
592 elle commence par la <var>url-avec-jokers</var>, même si le
593 dernier segment de chemin de la directive ne correspond qu'à un
594 préfixe de segment dee chemin de l'URL d'arrière-plan. Par exemple, <Proxy
595 http://example.com/foo> correspondra entre autres aux URLs
596 http://example.com/foo, http://example.com/foo/bar, et
597 http://example.com/foobar. La correspondance de l'URL finale
598 diffère du comportement de la section <directive type="section"
599 module="core">Location</directive> qui, pour le cas de cette note,
600 traitera le segment de chemin final comme s'il se terminait par un
602 <p>Pour un contrôle plus fin de la correspondance des URL, voir la
603 directive <directive type="section">ProxyMatch</directive>.</p>
607 <seealso><directive type="section" module="mod_proxy">ProxyMatch</directive></seealso>
611 <name>ProxyBadHeader</name>
612 <description>Détermine la manière de traiter les lignes d'en-tête
613 incorrectes d'une réponse</description>
614 <syntax>ProxyBadHeader IsError|Ignore|StartBody</syntax>
615 <default>ProxyBadHeader IsError</default>
616 <contextlist><context>server config</context><context>virtual host</context>
620 <p>La directive <directive>ProxyBadHeader</directive> permet de
621 déterminer le comportement de <module>mod_proxy</module> lorsqu'il
622 reçoit des lignes d'en-tête de réponse dont la syntaxe n'est pas valide (c'est
623 à dire ne contenant pas de caractère ':') en provenance du serveur
624 original. Les arguments disponibles sont :</p>
627 <dt><code>IsError</code></dt>
628 <dd>Annule la requête et renvoie une réponse de code 502 (mauvaise
629 passerelle). C'est le comportement par défaut.</dd>
631 <dt><code>Ignore</code></dt>
632 <dd>Traite les lignes d'en-tête incorrectes comme si elles n'avaient
633 pas été envoyées.</dd>
635 <dt><code>StartBody</code></dt>
636 <dd>A la réception de la première ligne d'en-tête incorrecte, les
637 autres en-têtes sont lus et ce qui reste est traité en tant que
638 corps. Ceci facilite la prise en compte des serveurs d'arrière-plan
639 bogués qui oublient d'insérer une ligne vide entre les
640 en-têtes et le corps.</dd>
645 <directivesynopsis type="section">
646 <name>ProxyMatch</name>
647 <description>Conteneur de directives s'appliquant à des ressources
648 mandatées correspondant à une expression rationnelle</description>
649 <syntax><ProxyMatch <var>regex</var>> ...</ProxyMatch></syntax>
650 <contextlist><context>server config</context><context>virtual host</context>
654 <p>La directive <directive type="section">ProxyMatch</directive> est
655 identique à la directive <directive module="mod_proxy"
656 type="section">Proxy</directive>, à l'exception qu'elle définit
657 les URLs auxquelles elle s'applique en utilisant une <glossary
658 ref="regex">expression rationnelle</glossary>.</p>
660 <p>A partir de la version 2.4.8, les groupes nommés et les
661 références arrières sont extraits et enregistrés dans
662 l'environnement avec leur nom en majuscules et préfixé par "MATCH_". Ceci permet
663 de référencer des URLs dans des <a href="../expr.html">expressions</a>
664 ou au sein de modules comme <module>mod_rewrite</module>. Pour
665 éviter toute confusion, les références arrières numérotées (non
666 nommées) sont ignorées. Vous devez utiliser à la place des groupes
669 <highlight language="config">
670 <ProxyMatch ^http://(?<sitename>[^/]+)>
671 require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
675 <seealso><directive type="section" module="mod_proxy">Proxy</directive></seealso>
679 <name>ProxyPreserveHost</name>
680 <description>Utilise l'en-tête de requête entrante Host pour la requête
681 du mandataire</description>
682 <syntax>ProxyPreserveHost On|Off</syntax>
683 <default>ProxyPreserveHost Off</default>
684 <contextlist><context>server config</context><context>virtual host</context>
685 <context>directory</context>
687 <compatibility>Utilisable
688 dans un contexte de répertoire depuis la version 2.3.3.</compatibility>
691 <p>Lorsqu'elle est activée, cette directive va transmettre l'en-tête
692 Host: de la requête entrante vers le serveur mandaté, au lieu du nom
693 d'hôte spécifié par la directive <directive module="mod_proxy">ProxyPass</directive>.</p>
695 <p>Cette directive est habituellement définie à <code>Off</code>.
696 Elle est principalement utile dans les configurations particulières
697 comme l'hébergement virtuel mandaté en masse à base de nom, où
698 l'en-tête Host d'origine doit être évalué par le serveur
704 <name>ProxyRequests</name>
705 <description>Active la fonctionnalité (standard) de mandataire
707 <syntax>ProxyRequests On|Off</syntax>
708 <default>ProxyRequests Off</default>
709 <contextlist><context>server config</context><context>virtual host</context>
713 <p>Cette directive permet d'activer/désactiver la fonctionnalité de
714 serveur mandataire direct d'Apache httpd. Définir ProxyRequests à
715 <code>Off</code> n'interdit pas l'utilisation de la directive
716 <directive module="mod_proxy">ProxyPass</directive>.</p>
718 <p>Pour une configuration typique de mandataire inverse ou
719 passerelle, cette directive doit être définie à
720 <code>Off</code>.</p>
722 <p>Afin d'activer la fonctionnalité de mandataire pour des sites
723 HTTP et/ou FTP, les modules <module>mod_proxy_http</module> et/ou
724 <module>mod_proxy_ftp</module> doivent également être chargés dans le
727 <p>Pour activer la fonctionnalité de mandataire sur les sites chiffrés en HTTPS, le module
728 <module>mod_proxy_connect</module> doit également être chargé dans le serveur.</p>
730 <note type="warning"><title>Avertissement</title>
731 <p>N'activez pas la fonctionnalité de mandataire avec la directive
732 <directive module="mod_proxy">ProxyRequests</directive> avant
733 d'avoir <a href="#access">sécurisé votre serveur</a>. Les serveurs
734 mandataires ouverts sont dangereux non seulement pour votre
735 réseau, mais aussi pour l'Internet au sens large.</p>
738 <seealso><a href="#forwardreverse">Mandataires/Passerelles directs et
739 inverses</a></seealso>
743 <name>ProxyRemote</name>
744 <description>Mandataire distant à utiliser pour traiter certaines
745 requêtes</description>
746 <syntax>ProxyRemote <var>comparaison</var> <var>serveur-distant</var></syntax>
747 <contextlist><context>server config</context><context>virtual host</context>
751 <p>Cette directive permet de définir des mandataires distants pour
752 ce mandataire. <var>comparaison</var> est soit le nom d'un protocole
753 que supporte le serveur distant, soit une URL partielle pour
754 laquelle le serveur distant devra être utilisé, soit <code>*</code>
755 pour indiquer que le serveur distant doit être utilisé pour toutes
756 les requêtes. <var>serveur-distant</var> est une URL partielle
757 correspondant au serveur distant. Syntaxe : </p>
760 <dfn>serveur-distant</dfn> =
761 <var>protocole</var>://<var>nom-serveur</var>[:<var>port</var>]
764 <p><var>protocole</var> est effectivement le protocole à utiliser
765 pour communiquer avec le serveur distant ; ce module ne supporte que
766 <code>http</code> et <code>https</code>. Lorsqu'on utilise
767 <code>https</code>, les requêtes sont redirigées par le mandataire
768 distant en utilisant la méthode HTTP CONNECT.</p>
770 <example><title>Exemple</title>
771 <highlight language="config">
772 ProxyRemote http://goodguys.example.com/ http://mirrorguys.example.com:8000
773 ProxyRemote * http://cleverproxy.localdomain
774 ProxyRemote ftp http://ftpproxy.mydomain:8080
778 <p>Dans la dernière ligne de l'exemple, le mandataire va faire
779 suivre les requêtes FTP, encapsulées dans une autre requête mandatée
780 HTTP, vers un autre mandataire capable de les traiter.</p>
782 <p>Cette directive supporte aussi les configurations de mandataire
783 inverse ; un serveur web d'arrière-plan peut être intégré dans
784 l'espace d'URL d'un serveur virtuel, même si ce serveur est caché
785 par un autre mandataire direct.</p>
790 <name>ProxyRemoteMatch</name>
791 <description>Le mandataire distant à utiliser pour traiter les requêtes
792 correspondant à une expression rationnelle</description>
793 <syntax>ProxyRemoteMatch <var>regex</var> <var>serveur-distant</var></syntax>
794 <contextlist><context>server config</context><context>virtual host</context>
798 <p>La directive <directive>ProxyRemoteMatch</directive> est
799 identique à la directive <directive
800 module="mod_proxy">ProxyRemote</directive>, à l'exception du
801 premier argument qui est une <glossary ref="regex">expression
802 rationnelle</glossary> à mettre en correspondance avec l'URL de la
808 <name>BalancerGrowth</name>
809 <description>Nombre de membres supplémentaires pouvant être ajoutés
810 après la configuration initiale</description>
811 <syntax>BalancerGrowth <var>#</var></syntax>
812 <default>BalancerGrowth 5</default>
813 <contextlist><context>server config</context><context>virtual host</context></contextlist>
814 <compatibility>BalancerGrowth est disponible depuis la version 2.3.13 du
815 serveur HTTP Apache</compatibility>
817 <p>Cette directive permet de définir le nombre de
818 répartiteurs de charge pouvant
819 être ajoutés à ceux déjà configurés pour un
820 serveur virtuel. Elle n'est active que si au minimum un répartiteur
821 a été préconfiguré.</p>
826 <name>BalancerPersist</name>
827 <description>Tente de conserver les changements effectués par le
828 gestionnaire de répartition de charge après un redémarrage du
829 serveur.</description>
830 <syntax>BalancerPersist On|Off</syntax>
831 <default>BalancerPersist Off</default>
832 <contextlist><context>server config</context><context>virtual host</context></contextlist>
833 <compatibility>BalancerPersist n'est disponible qu'à partir de la
834 version 2.4.4 du serveur HTTP Apache.</compatibility>
836 <p>Cette directive permet de conserver le contenu de l'espace
837 mémoire partagé associé aux répartiteurs de charge et à leurs
838 membres après un redémarrage du serveur. Ces modifications
839 locales ne sont ainsi pas perdues lors des transitions d'état
840 dues à un redémarrage.</p>
845 <name>ProxyPassInherit</name>
846 <description>Héritage des directives ProxyPass définies au niveau du
847 serveur principal</description>
848 <syntax>ProxyPassInherit On|Off</syntax>
849 <default>ProxyPassInherit On</default>
850 <contextlist><context>server config</context><context>virtual host</context></contextlist>
851 <compatibility>Disponible à partir de la version 2.4.5 du serveur
852 HTTP Apache.</compatibility>
854 <p>Cette directive permet à un serveur virtuel d'hériter des
855 directives <directive module="mod_proxy">ProxyPass</directive> définies
856 au niveau du serveur principal. Si vous utilisez la fonctionnalité de
857 modifications dynamiques du Balancer Manager, cette directive peut
858 causer des problèmes et des comportements inattendus et doit donc
860 <p>Les valeurs définies au niveau du serveur principal
861 constituent les valeurs par défaut pour tous les serveurs virtuels.</p>
862 <p>La désactivation de ProxyPassInherit désactive aussi la
863 directive <directive module="mod_proxy">BalancerInherit</directive>.</p>
868 <name>BalancerInherit</name>
869 <description>Héritage des membres du groupes de répartition de
870 charge du mandataire définis au niveau du serveur principal</description>
871 <syntax>BalancerInherit On|Off</syntax>
872 <default>BalancerInherit On</default>
873 <contextlist><context>server config</context><context>virtual host</context></contextlist>
874 <compatibility>Disponible à partir de la version 2.4.5 du serveur
875 HTTP Apache.</compatibility>
877 <p>Cette directive permet d'attribuer au serveur virtuel courant
878 l'héritage des membres de groupes de répartition de charge
879 définis au niveau du serveur
880 principal. Elle ne doit pas être activée si vous
881 utilisez la fonctionnalité de modifications dynamiques du
882 gestionnaire de répartition de charge (Balancer Manager) pour
883 éviter des problèmes et des comportements inattendus.</p>
884 <p>Les définitions au niveau du serveur principal constituent
885 les définitions par défaut au niveau des serveurs virtuels.</p>
886 <p>La désactivation de ProxyPassInherit désactive aussi la
887 directive <directive module="mod_proxy">BalancerInherit</directive>.</p>
892 <name>BalancerMember</name>
893 <description>Ajoute un membre à un groupe de répartition de
895 <syntax>BalancerMember [<var>balancerurl</var>] <var>url</var> [<var
896 >clé=valeur [clé=valeur ...]]</var></syntax>
897 <contextlist><context>directory</context>
900 <p>Cette directive permet d'ajouter un membre à un groupe de
901 répartition de charge. Elle peut se trouver dans un conteneur
902 <code><Proxy <var>balancer://</var>...></code>, et accepte
903 tous les paramètres de paires clé/valeur que supporte la directive
904 <directive module="mod_proxy">ProxyPass</directive>.</p>
905 <p>La directive <directive>BalancerMember</directive> accepte un paramètre
906 supplémentaire : <var>loadfactor</var>. Il s'agit du facteur de
907 charge du membre - un nombre entre 1 (valeur par défaut) et 100, qui
908 définit la charge à appliquer au membre en question.</p>
909 <p>L'argument <var>balancerurl</var> n'est requis que s'il ne se trouve pas
910 dèjà dans la directive de conteneur <code><Proxy
911 <var>balancer://</var>...></code>. Il correspond à l'URL d'un
912 répartiteur de charge défini par une directive <directive
913 module="mod_proxy">ProxyPass</directive>.</p>
914 <p>La partie chemin de l'URL du membre du groupe de répartition de
915 charge dans toute directive de conteneur <code><Proxy
916 <var>balancer://</var>...></code> est ignorée.</p>
917 <p>Les slashes de fin doivent normalement être supprimés de l'URL
918 d'un <directive>BalancerMember</directive>.</p>
923 <name>ProxySet</name>
924 <description>Définit différents paramètres relatifs à la répartition de
925 charge des mandataires et aux membres des groupes de répartition de
927 <syntax>ProxySet <var>url</var> <var>clé=valeur [clé=valeur ...]</var></syntax>
928 <contextlist><context>directory</context>
931 <p>Cette directive propose une méthode alternative pour définir tout
932 paramètre relatif aux répartiteurs de charge et serveurs cibles de
933 mandataires normalement définis via la directive <directive
934 module="mod_proxy">ProxyPass</directive>. Si elle se trouve dans un
935 conteneur <code><Proxy <var>url de répartiteur|url de
936 serveur cible</var>></code>, l'argument <var>url</var> n'est pas
937 nécessaire. Comme effet de bord, le répartiteur ou serveur cible respectif
938 est créé. Ceci peut s'avérer utile pour la mise en oeuvre d'un
939 mandataire inverse via une directive <directive
940 module="mod_rewrite">RewriteRule</directive> au lieu de <directive
941 module="mod_proxy">ProxyPass</directive>.</p>
944 <highlight language="config">
945 <Proxy balancer://hotcluster>
946 BalancerMember http://www2.example.com:8080 loadfactor=1
947 BalancerMember http://www3.example.com:8080 loadfactor=2
948 ProxySet lbmethod=bytraffic
953 <highlight language="config">
954 <Proxy http://backend>
955 ProxySet keepalive=On
959 <highlight language="config">
960 ProxySet balancer://foo lbmethod=bytraffic timeout=15
963 <highlight language="config">
964 ProxySet ajp://backend:7001 timeout=15
967 <note type="warning"><title>Avertissement</title>
968 <p>Gardez à l'esprit qu'une même clé de paramètre peut avoir
969 différentes significations selon qu'elle s'applique à un
970 répartiteur ou à un serveur cible, et ceci est illustré par les deux
971 exemples précédents où il est question d'un timeout.</p>
978 <name>ProxyPass</name>
979 <description>Référencer des serveurs distants depuis
980 l'espace d'URLs du serveur local</description>
981 <syntax>ProxyPass [<var>chemin</var>] !|<var>url</var> [<var>clé=valeur</var>
982 <var>[clé=valeur</var> ...]] [nocanon] [interpolate] [noquery]</syntax>
983 <contextlist><context>server config</context><context>virtual host</context>
984 <context>directory</context>
986 <compatibility>Les Sockets de style Unix (Unix Domain Socket - UDS) sont supportés à partir
987 de la version 2.4.7 du serveur HTTP Apache</compatibility>
990 <p>Cette directive permet de référencer des serveurs distants depuis
991 l'espace d'URLs du serveur local ; le serveur
992 local n'agit pas en tant que mandataire au sens conventionnel, mais
993 plutôt comme miroir du serveur distant. Le serveur local est
994 souvent nommé <dfn>mandataire inverse</dfn> ou
995 <dfn>passerelle</dfn>. L'argument <var>chemin</var> est le nom d'un
996 chemin virtuel local ; <var>url</var> est une URL partielle pour le
997 serveur distant et ne doit pas contenir de chaîne d'arguments.</p>
999 <note><strong>Note : </strong>Cette directive n'est pas supportée au sein
1000 des sections <directive type="section" module="core">Directory</directive>
1001 et <directive type="section" module="core">Files</directive>.</note>
1003 <note type="warning">En général, la directive <directive
1004 module="mod_proxy">ProxyRequests</directive> doit être définie à
1005 <strong>off</strong> lorsqu'on utilise la directive
1006 <directive>ProxyPass</directive>.</note>
1008 <p>Les sockets de style Unix sont supportés à partir de la version
1009 2.4.7 du serveur HTTP Apache ; pour utiliser cette fonctionnalité,
1010 il suffit d'utiliser une URL cible préfixée par
1011 <code>unix:/path/lis.sock|</code>. Par exemple, pour mandater HTTP
1012 et cibler l'UDS /home/www/socket, vous devez utiliser
1013 <code>unix:/home/www.socket|http://localhost/whatever/</code>. Comme
1014 le socket est local, le nom d'hôte utilisé (ici
1015 <code>localhost</code>) peut être sujet à discussion, mais il est
1016 transmis dans l'en-tête Host: de la requête.</p>
1018 <note><strong>Note :</strong>Le chemin associé à l'URL
1019 <code>unix:</code> tient compte de la directive
1020 <directive>DefaultRuntimeDir</directive>.</note>
1022 <note><strong>Note :</strong>Afin d'éviter l'échappement du
1023 caractère <code>'|'</code>, la directive
1024 <directive>RewriteRule</directive> doit posséder l'option
1025 <code>[P,NE]</code>.</note>
1027 <p>Lorsque la directive ProxyPass est utilisée à l'intérieur d'une
1028 section <directive type="section" module="core"
1029 >Location</directive>, le premier argument est omis et le répertoire
1030 local est obtenu à partir de la section <directive type="section"
1031 module="core">Location</directive>. Il en sera de même dans une
1032 section <directive type="section"
1033 module="core">LocationMatch</directive> ; cependant, ProxyPass
1034 n'interprète pas les expressions rationnelles, et il sera ici
1035 nécessaire d'utiliser la directive
1036 <directive>ProxyPassMatch</directive> à la place.</p>
1038 <p>Supposons que le serveur local a pour adresse
1039 <code>http://example.com/</code> ; alors la ligne</p>
1041 <highlight language="config">
1042 <Location "/mirror/foo/">
1043 ProxyPass "http://backend.example.com/"
1047 <p>va convertir en interne toute requête pour
1048 <code>http://example.com/miroir/foo/bar</code> en une requête
1049 mandatée pour <code>http://backend.example.com/bar</code>.</p>
1051 <p>Si vous avez besoin d'un configuration de mandataire inverse plus
1052 souple, reportez-vous à la documentation de la directive <directive
1053 module="mod_rewrite">RewriteRule</directive> et son drapeau
1054 <code>[P]</code>.</p>
1056 <p>La syntaxe alternative suivante est valide, bien qu'elle puisse
1057 induire une dégradation des performances lorsqu'elle est
1058 présente en très grand nombre. Elle possède l'avantage de
1059 permettre un contrôle dynamique via l'interface <a
1060 href="mod_proxy_balancer.html#balancer_manager">Balancer Manager</a> :</p>
1062 <highlight language="config">
1063 ProxyPass "/miroir/foo/" "http://backend.example.com/"
1066 <note type="warning">
1067 <p>Si le premier argument se termine par un slash
1068 <strong>/</strong>, il doit en être de même pour le second argument
1069 et vice versa. Dans le cas contraire, il risque de manquer des
1070 slashes nécessaires dans la requête résultante vers le serveur
1071 d'arrière-plan et les résulats ne seront pas ceux attendus.
1075 <p>Le drapeau <code>!</code> permet de soustraire un sous-répertoire
1076 du mandat inverse, comme dans l'exemple suivant :</p>
1078 <highlight language="config">
1079 <Location "/mirror/foo/">
1080 ProxyPass "http://backend.example.com/"
1082 <Location "/mirror/foo/i">
1087 <highlight language="config">
1088 ProxyPass "/mirror/foo/i" "!"
1089 ProxyPass "/mirror/foo" "http://backend.example.com"
1092 <p>va mandater toutes les requêtes pour <code>/miroir/foo</code>
1093 vers <code>backend.example.com</code>, <em>sauf</em> les requêtes
1094 pour <code>/miroir/foo/i</code>.</p>
1096 <note type="warning"><title>Ordre de classement des directives ProxyPass</title>
1097 <p>Les directives <directive
1098 module="mod_proxy">ProxyPass</directive> et <directive
1099 module="mod_proxy">ProxyPassMatch</directive> sont évaluées dans
1100 l'ordre de leur apparition dans le fichier de configuration. La
1101 première règle qui correspond s'applique. Vous devez donc en
1102 général classer les règles <directive
1103 module="mod_proxy">ProxyPass</directive> qui entrent en conflit de
1104 l'URL la plus longue à la plus courte. Dans le cas contraire, les
1105 règles situées après une règle dont l'URL correspond au début de
1106 leur propre URL seront ignorées. Notez que tout ceci est en
1107 relation avec le partage de workers. Par contre, on ne peut placer
1108 qu'une seule directive <directive
1109 module="mod_proxy">ProxyPass</directive> dans une section
1110 <directive module="core">Location</directive>, et c'est la section
1111 la plus spécifique qui l'emportera.</p>
1113 <p>Pour les mêmes raisons, les exclusions doivent se situer <em>avant</em>
1114 les directives <directive>ProxyPass</directive> générales. A partir de la
1115 version 2.4.26 du serveur HTTP Apache, la variable
1116 d'environnement "no-proxy" est une alternative aux exclusions et constitue
1117 le seul moyen de configurer une exclusion pour une directive
1118 <directive>ProxyPass</directive> dans le contexte d'une section <directive
1119 module="core">Location</directive>. Cette variable doit être définie via
1120 la directive <directive module="mod_setenvif">SetEnvIf</directive> car la
1121 directive <directive module="mod_env">SetEnv</directive> n'est pas évaluée
1124 </note> <!-- /ordering_proxypass -->
1126 <p><strong>ProxyPass <code>clé=valeur</code> Paramètres</strong></p>
1128 <p>Depuis la version 2.1 du serveur HTTP Apache, mod_proxy supporte
1129 les groupements de connexions vers un serveur d'arrière-plan. Les
1130 connexions créées à la demande peuvent être enregistrées dans un
1131 groupement pour une utilisation ultérieure. La taille du groupe
1132 ainsi que d'autres caractéristiques peuvent être définies via la
1133 directive <directive>ProxyPass</directive> au moyen de paramètres
1134 <code>clé=valeur</code> dont la description fait l'objet du tableau
1137 <p>Par défaut, mod_proxy permet et met en réserve le nombre maximum
1138 de connexions pouvant être utilisées simultanément par le processus
1139 enfant concerné du serveur web. Le paramètre <code>max</code> permet
1140 de réduire cette valeur par défaut. Le paramètre <code>ttl</code>,
1141 quant à lui, permet de définir une durée de vie optionnelle ; les
1142 connexions qui n'ont pas été utilisées pendant au moins
1143 <code>ttl</code> secondes seront fermées. <code>ttl</code> permet
1144 aussi d'empêcher l'utilisation d'une connexion susceptible d'être
1145 fermée suite à une fin de vie de connexion persistante sur le
1146 serveur d'arrière-plan.</p>
1148 <p>Le groupement de connexions est maintenu au niveau de chaque
1149 processus enfant du serveur web, et <code>max</code>, ainsi que les
1150 autres paramètres, ne font
1151 l'objet d'aucune coordination entre les différents processus
1152 enfants, sauf si un seul processus enfant est autorisé par la
1153 configuration ou la conception du module multi-processus (MPM).</p>
1155 <example><title>Exemple</title>
1156 <highlight language="config">
1157 ProxyPass "/example" "http://backend.example.com" max=20 ttl=120 retry=300
1161 <table border="2"><tr><th>Paramètres de BalancerMember</th></tr></table>
1163 <tr><th>Paramètre</th>
1165 <th>Description</th></tr>
1168 <td>Nombre minimum d'entrées dans le pool de connexions,
1169 distinct du nombre de connexions effectif. La valeur par défaut
1170 ne doit être modifiée que dans des circonstances particulières
1171 où la mémoire associée aux connexions avec le serveur
1172 d'arrière-plan doit être préallouée ou réservée dans le tas.</td></tr>
1175 <td>Nombre maximum de connexions autorisées vers le serveur
1176 d'arrière-plan. La valeur par défaut correspond au nombre de
1177 threads par processus pour le MPM (Module Multi Processus)
1178 actif. La valeur sera toujours 1 pour le MPM Prefork, alors
1179 qu'elle dépendra de la définition de la directive
1180 <directive>ThreadsPerChild</directive> pour les autres MPMs.</td></tr>
1183 <td>Les entrées du pool de connexions conservées au delà de
1184 cette limite sont libérées au cours de certaines opérations si
1185 elles n'ont pas été utilisées au cours de leur durée de vie,
1186 définie par le paramètre <code>ttl</code>. Si l'entrée du pool
1187 de connexions est associée à une connexion, cette dernière sera
1188 fermée. La valeur par défaut ne doit être modifiée que dans des
1189 circonstances particulières où les entrées du pool de connexions
1190 et toutes connexions associées qui ont dépassé leur durée de vie
1191 doivent être libérées ou fermées de manière plus autoritaire.</td></tr>
1192 <tr><td>acquire</td>
1194 <td>Cette clé permet de définir le délai maximum d'attente pour
1195 une connexion libre dans le jeu de connexions, en millisecondes.
1196 S'il n'y a pas de connexion libre dans le jeu, Apache httpd renverra
1197 l'état <code>SERVER_BUSY</code> au client.
1199 <tr><td>connectiontimeout</td>
1201 <td>Délai d'attente d'une connexion en secondes.
1202 La durée en secondes pendant laquelle Apache httpd va attendre pour
1203 l'établissement d'une connexion vers le serveur d'arrière-plan.
1204 Le délai peut être spécifié en millisecondes en ajoutant le
1207 <tr><td>disablereuse</td>
1209 <td>Vous pouvez utiliser cette clé pour forcer mod_proxy à
1210 fermer immédiatement une connexion vers le serveur
1211 d'arrière-plan après utilisation, et ainsi désactiver le jeu de
1212 connexions permanentes vers ce serveur. Ceci peut s'avérer utile
1213 dans des situations où un pare-feu situé entre Apache httpd et le
1214 serveur d'arrière-plan (quelque soit le protocole) interrompt
1215 des connexions de manière silencieuse, ou lorsque le serveur
1216 d'arrière-plan lui-même est accessible par rotation de DNS
1217 (round-robin DNS). Pour désactiver la réutilisation du jeu de
1218 connexions, définissez cette clé à <code>On</code>.
1220 <tr><td>enablereuse</td>
1222 <td>Fournie à l'intention des gestionnaires de projet
1223 qui nécessitent un accord pour la réutilisation des connexions
1224 (tels que <module>mod_proxy_fcgi</module>),
1225 cette option est l'inverse de l'option 'disablereuse' ci-dessus.
1227 <tr><td>flushpackets</td>
1229 <td>Permet de définir si le module mandataire doit vider
1230 automatiquement le tampon de sortie après chaque tronçon de
1231 données. 'off' signifie que le tampon sera vidé si nécessaire,
1232 'on' que le tampon sera vidé après chaque envoi d'un
1233 tronçon de données, et 'auto' que le tampon sera vidé après un
1234 délai de 'flushwait' millisecondes si aucune entrée n'est reçue.
1235 Actuellement, cette clé n'est supportée que par AJP.
1237 <tr><td>flushwait</td>
1239 <td>Le délai d'attente pour une entrée additionnelle, en
1240 millisecondes, avant le vidage du tampon en sortie dans le cas
1241 où 'flushpackets' est à 'auto'.
1243 <tr><td>iobuffersize</td>
1245 <td>Permet de définir la taille du tampon d'entrées/sorties du
1246 bloc-notes interne. Cette clé vous permet d'outrepasser la
1247 directive <directive>ProxyIOBufferSize</directive> pour un
1248 serveur cible spécifique. La valeur doit être au minimum 512 ou définie
1249 à 0 pour la valeur par défaut du système de 8192.
1251 <tr><td>keepalive</td>
1253 <td><p>Cette clé doit être utilisée lorsque vous avez un pare-feu
1254 entre Apache httpd et le serveur d'arrière-plan, et si ce dernier tend
1255 à interrompre les connexions inactives. Cette clé va faire en
1256 sorte que le système d'exploitation envoie des messages
1257 <code>KEEP_ALIVE</code> sur chacune des connexions inactives et
1258 ainsi éviter la fermeture de la connexion par le pare-feu.
1259 Pour conserver les connexions persistantes, definissez cette
1260 propriété à <code>On</code>.</p>
1261 <p>La fréquence de vérification des connexions TCP persistantes
1262 initiale et subséquentes dépend de la configuration globale de l'OS,
1263 et peut atteindre 2 heures. Pour être utile, la fréquence configurée
1264 dans l'OS doit être inférieure au seuil utilisé par le pare-feu.</p>
1269 <td>Définit le groupe de répartition de charge dont le serveur cible
1270 est membre. Le répartiteur de charge va essayer tous les membres
1271 d'un groupe de répartition de charge de numéro inférieur avant
1272 d'essayer ceux dont le groupe possède un numéro supérieur.
1276 <td>Avec la clé Ping, le serveur web va "tester" la connexion
1277 vers le serveur d'arrière-plan avant de transmettre la requête.
1278 Pour les valeurs négatives, le test est une simple vérification
1279 de socket, alors que pour les valeurs positives, il s'agit d'une
1280 vérification plus approfondie dépendant du protocole.
1281 Avec AJP, <module>mod_proxy_ajp</module> envoie une requête
1282 <code>CPING</code> sur la connexion ajp13 (implémenté sur Tomcat
1283 3.3.2+, 4.1.28+ et 5.0.13+). Avec HTTP,
1284 <module>mod_proxy_http</module> envoie <code>100-Continue</code>
1285 au serveur d'arrière-plan (seulement avecHTTP/1.1 - pour les
1286 serveurs d'arrière-plan non HTTP/1.1, cette clé ne produit
1287 aucun effet). Dans les deux cas, ce paramètre correspond au
1288 délai en secondes pour l'attente de la réponse. Cette
1289 fonctionnalité a été ajoutée pour éviter les problèmes avec les
1290 serveurs d'arrière-plan bloqués ou surchargés.
1293 réseau peut s'en trouver augmenté en fonctionnement normal, ce
1294 qui peut poser problème, mais peut s'en trouver diminué dans les
1295 cas où les noeuds de cluster sont arrêtés ou
1296 surchargés. Le délai peut
1297 aussi être défini en millisecondes en ajoutant le suffixe
1300 <tr><td>receivebuffersize</td>
1302 <td>Définit la taille du tampon réseau explicite (TCP/IP) pour
1303 les connexions mandatées. Cette clé vous permet d'outrepasser la
1304 directive <directive>ProxyReceiveBufferSize</directive> pour un
1305 serveur cible spécifique. Sa valeur doit être au minimum 512 ou définie
1306 à 0 pour la valeur par défaut du système.
1308 <tr><td>redirect</td>
1310 <td>Route pour la redirection du serveur cible. Cette valeur est en
1311 général définie dynamiquement pour permettre une suppression
1312 sécurisée du noeud du cluster. Si cette clé est définie, toutes
1313 les requêtes sans identifiant de session seront redirigées vers
1314 le membre de groupe de répartition de charge dont la route
1315 correspond à la valeur de la clé.
1319 <td>Délai entre deux essais du serveur cible du jeu de connexions en
1320 secondes. Si le serveur cible du jeu de connexions vers le serveur
1321 d'arrière-plan est dans un état d'erreur, Apache httpd ne redirigera
1322 pas de requête vers ce serveur avant l'expiration du délai
1323 spécifié. Ceci permet d'arrêter le serveur d'arrière-plan pour
1324 maintenance, et de le remettre en ligne plus tard. Une valeur de
1325 0 implique de toujours essayer les serveurs cibles dans un état d'erreur
1330 <td>La route du serveur cible lorsqu'il est utilisé au sein d'un
1331 répartiteur de charge. La route est une valeur ajoutée à
1332 l'identifiant de session.
1336 <td>Valeur constituée d'une simple lettre et définissant l'état
1337 initial de ce serveur cible.
1339 <tr><td><code>D</code></td><td>le serveur cible est
1340 désactivé et n'accepte aucune requête ; sa
1341 réactivation sera automatiquement relancée.</td></tr>
1342 <tr><td><code>S</code></td><td>le serveur cible est arrêté
1343 ; il n'accepte plus de requête et sa réactivation ne sera pas
1344 automatiquement relancée.</td></tr>
1345 <tr><td><code>I</code></td><td>le serveur cible est en mode "erreurs ignorées",
1346 et sera toujours considéré comme disponible.</td></tr>
1347 <tr><td><code>H</code></td><td>le serveur cible est en mode d'attente et ne sera
1348 utilisé que si aucun autre serveur n'est disponible.</td></tr>
1349 <tr><td><code>E</code></td><td>le serveur cible est en erreur.</td></tr>
1350 <tr><td><code>N</code></td><td>le serveur cible est en mode vidage, n'acceptera que
1351 les sessions persistantes qui lui appartiennent, et refusera
1352 toutes les autres requêtes.</td></tr>
1354 Une valeur d'état peut être définie (ce qui
1355 correspond au comportement par défaut) en préfixant la valeur
1356 par '+', ou annulée en préfixant la valeur par '-'. Ainsi, la
1357 valeur 'S-E' définit l'état de ce serveur cible à "arrêté" et supprime
1358 le drapeau "en-erreur".
1360 <tr><td>timeout</td>
1361 <td><directive module="mod_proxy">ProxyTimeout</directive></td>
1362 <td>Délai d'attente de la connexion en secondes. Le nombre de
1363 secondes pendant lesquelles Apache httpd attend l'envoi de
1364 données vers le serveur d'arrière-plan.
1368 <td>Durée de vie des connexions inactives et des entrées du pool
1369 de connexions associées en secondes. Une fois cette
1370 limite atteinte, une connexion ne sera pas réutilisée ; elle
1371 sera fermée après un délai variable.
1373 <tr><td>flusher</td>
1375 <td><p>Le fournisseur utilisé par <module>mod_proxy_fdpass</module>.
1376 Se référer à la documentation de ce module pour plus de détails.</p>
1380 <td><p>Le mot de passe utilisé par <module>mod_proxy_ajp</module>. Voir
1381 la documentation de ce module pour plus de détails.</p>
1383 <tr><td>upgrade</td>
1385 <td><p>Le protocol accepté par <module>mod_proxy_wstunnel</module> dans
1386 l'en-tête Upgrade. Voir la documentation de ce module pour plus de
1392 <p>Si l'URL de la directive Proxy débute par
1393 <code>balancer://</code> (par exemple:
1394 <code>balancer://cluster</code>, toute information relative au
1395 chemin est ignorée), alors un serveur cible virtuel ne communiquant pas
1396 réellement avec le serveur d'arrière-plan sera créé. Celui-ci sera
1397 en fait responsable de la gestion de plusieurs serveurs cibles "réels". Dans
1398 ce cas, un jeu de paramètres particuliers s'applique à ce serveur cible
1399 virtuel. Voir <module>mod_proxy_balancer</module> pour plus
1400 d'informations à propos du fonctionnement du répartiteur de
1403 <table border="2"><tr><th>Paramètres du répartiteur</th></tr></table>
1405 <tr><th>Paramètre</th>
1407 <th>Description</th></tr>
1408 <tr><td>lbmethod</td>
1410 <td>Méthode de répartition de charge utilisée. Permet de
1411 sélectionner la méthode de planification de la répartition de
1412 charge à utiliser. La valeur est soit <code>byrequests</code>,
1413 pour effectuer un décompte de requêtes pondérées, soit
1414 <code>bytraffic</code>, pour effectuer une répartition en
1415 fonction du décompte des octets transmis, soit
1416 <code>bybusyness</code>, pour effectuer une répartition en
1417 fonction des requêtes en attente. La valeur par défaut est
1418 <code>byrequests</code>.
1420 <tr><td>maxattempts</td>
1421 <td>1 de moins que le nombre de workers, ou 1 avec un seul
1423 <td>Nombre maximum d'échecs avant abandon.
1425 <tr><td>nofailover</td>
1427 <td>Si ce paramètre est défini à <code>On</code>, la session va
1428 s'interrompre si le serveur cible est dans un état d'erreur ou
1429 désactivé. Définissez ce paramètre à <code>On</code> si le serveur
1430 d'arrière-plan ne supporte pas la réplication de session.
1432 <tr><td>stickysession</td>
1434 <td>Nom de session persistant du répartiteur. La valeur est
1435 généralement du style <code>JSESSIONID</code> ou
1436 <code>PHPSESSIONID</code>, et dépend du serveur d'application
1437 d'arrière-plan qui supporte les sessions. Si le serveur
1438 d'application d'arrière-plan utilise des noms différents pour
1439 les cookies et les identifiants codés d'URL (comme les
1440 conteneurs de servlet), séparez-les par le caractère '|'. La
1441 première partie contient le cookie et la seconde le chemin.<br />
1442 Disponible depuis la version 2.4.4 du serveur HTTP Apache.
1444 <tr><td>stickysessionsep</td>
1446 <td>Permet de définir le caractère de séparation dans le cookie
1447 de session. En effet, certains serveurs d'application d'arrière-plan
1448 n'utilisent pas le '.' comme caractère de séparation. Par
1449 exemple, le serveur Oracle Weblogic utilise le caractère '!'.
1450 Cette option permet donc de définir le caractère de séparation à
1451 une valeur appropriée. Si elle est définie à 'Off', aucun
1452 caractère de séparation ne sera utilisé.
1454 <tr><td>scolonpathdelim</td>
1456 <td>Si ce paramètre est défini à <code>On</code>, le caractère
1457 ';' sera utilisé comme séparateur de chemin de session
1458 persistante additionnel. Ceci permet principalement de simuler
1459 le comportement de mod_jk lorsqu'on utilise des chemins du style
1460 <code>JSESSIONID=6736bcf34;foo=aabfa</code>.
1462 <tr><td>timeout</td>
1464 <td>Délai du répartiteur en secondes. Si ce paramètre est
1465 défini, sa valeur correspond à la durée maximale d'attente pour
1466 un serveur cible libre. Le comportement par défaut est de ne pas
1469 <tr><td>failonstatus</td>
1471 <td>Une liste de codes d'état HTTP séparés par des virgules. Si
1472 ce paramètre est présent, le worker se mettra en erreur si le
1473 serveur d'arrière-plan renvoie un des codes d'état spécifiés
1474 dans la liste. La récupération du worker s'effectue comme dans
1475 le cas des autres erreurs de worker.
1478 <tr><td>failontimeout</td>
1480 <td>Si ce paramètre est défini à "On", un délai d'attente
1481 dépassé en entrée/sortie après envoi d'une requête au serveur
1482 d'arrière-plan va mettre le processus en état d'erreur. La
1483 sortie de cet état d'erreur se passe de la même façon que pour
1484 les autres erreurs.<br />
1485 Disponible depuis la version 2.4.5 du serveur HTTP Apache.
1489 <td><auto></td>
1490 <td>Le nombre à usage unique de protection utilisé dans la page
1491 de l'application <code>balancer-manager</code>. Par défaut, la
1492 protection de la page est assurée par un nombre à usage unique
1493 automatique à base d'UUID. Si une valeur est précisée, elle sera
1494 utilisée comme nombre à usage unique. La valeur
1495 <code>None</code> désactive la vérification du nombre à usage
1497 <note><title>Note</title>
1498 <p>En plus du nombre à usage unique, la page de l'application
1499 <code>balancer-manager</code> peut être protégée par une ACL.</p>
1504 <td>Nombre de membres supplémentaires que l'on peut ajouter à ce
1505 répartiteur en plus de ceux définis au niveau de la
1508 <tr><td>forcerecovery</td>
1510 <td>Force la relance immédiate de tous les membres sans tenir
1511 compte de leur paramètre retry dans le cas où ils sont tous en
1512 état d'erreur. Il peut cependant arriver qu'un membre déjà
1513 surchargé entre dans une situation critique si la relance de
1514 tous les membres est forcée sans tenir compte du paramètre retry
1515 de chaque membre. Dans ce cas, définissez ce paramètre à
1516 <code>Off</code>.<br />
1517 Disponible depuis la version 2.4.2 du serveur HTTP Apache.
1521 <p>Exemple de configuration d'un répartiteur de charge</p>
1522 <highlight language="config">
1523 ProxyPass "/special-area" "http://special.example.com" smax=5 max=10
1524 ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On
1525 <Proxy balancer://mycluster>
1526 BalancerMember ajp://1.2.3.4:8009
1527 BalancerMember ajp://1.2.3.5:8009 loadfactor=20
1528 # Less powerful server, don't send as many requests there,
1529 BalancerMember ajp://1.2.3.6:8009 loadfactor=5
1533 <p>Configuration d'un serveur cible de réserve qui ne sera utilisé que si
1534 aucun autre serveur cible n'est disponible :</p>
1535 <highlight language="config">
1536 ProxyPass "/" "balancer://hotcluster/ "
1537 <Proxy balancer://hotcluster>
1538 BalancerMember ajp://1.2.3.4:8009 loadfactor=1
1539 BalancerMember ajp://1.2.3.5:8009 loadfactor=2
1540 # The server below is on hot standby
1541 BalancerMember ajp://1.2.3.6:8009 status=+H
1542 ProxySet lbmethod=bytraffic
1546 <p><strong>Mot-clés supplémentaires de ProxyPass</strong></p>
1548 <p>Normalement, mod_proxy va mettre sous leur forme canonique les
1549 URLs traitées par ProxyPass. Mais ceci peut être incompatible avec
1550 certains serveurs d'arrière-plan, et en particulier avec ceux qui
1551 utilisent <var>PATH_INFO</var>. Le mot-clé optionnel
1552 <var>nocanon</var> modifie ce comportement et permet de transmettre
1553 le chemin d'URL sous sa forme brute au serveur d'arrière-plan. Notez
1554 que ce mot-clé peut affecter la sécurité de votre serveur d'arrière-plan,
1555 car la protection limitée contre les attaques à base d'URL que
1556 fournit le mandataire est alors supprimée.</p>
1558 <p>Par défaut, mod_proxy inclut la chaîne de paramètres lors de la
1559 génération de la variable d'environnement
1560 <var>SCRIPT_FILENAME</var>. Le mot-clé optionnel <var>noquery</var>
1561 (disponible à partir de la version 2.4.1) permet d'exclure cette
1568 <p>Le mot-clé optionnel <var>interpolate</var>, en combinaison avec la directive
1569 <directive>ProxyPassInterpolateEnv</directive>, permet à ProxyPass
1570 d'interpoler les variables d'environnement à l'aide de la syntaxe
1571 <var>${VARNAME}</var>. Notez que de nombreuses variables
1572 d'environnement standard dérivées de CGI n'existeront pas lorsque
1573 l'interpolation se produit ; vous devrez alors encore avoir avoir
1574 recours à <module>mod_rewrite</module> pour des règles
1575 complexes. Notez aussi que l'interpolation n'est pas supportée dans
1576 la partie protocole d'une URL. La détermination dynamique du
1577 protocole peut être effectuée à l'aide de
1578 <module>mod_rewrite</module> comme dans l'exemple suivant :</p>
1580 <highlight language="config">
1583 RewriteCond %{HTTPS} =off
1584 RewriteRule . - [E=protocol:http]
1585 RewriteCond %{HTTPS} =on
1586 RewriteRule . - [E=protocol:https]
1588 RewriteRule ^/mirror/foo/(.*) %{ENV:protocol}://backend.example.com/$1 [P]
1589 ProxyPassReverse "/mirror/foo/" "http://backend.example.com/"
1590 ProxyPassReverse "/mirror/foo/" "https://backend.example.com/"
1594 </directivesynopsis>
1597 <name>ProxyPassMatch</name>
1598 <description>Fait correspondre des serveurs distants dans l'espace d'URL
1599 du serveur local en utilisant des expressions rationnelles</description>
1600 <syntax>ProxyPassMatch [<var>regex</var>] !|<var>url</var>
1601 [<var>clé=valeur</var>
1602 <var>[clé=valeur</var> ...]]</syntax>
1603 <contextlist><context>server config</context><context>virtual host</context>
1604 <context>directory</context>
1608 <p>Cette directive est identique à la directive <directive
1609 module="mod_proxy">ProxyPass</directive>, mais fait usage des
1610 expressions rationnelles, au lieu d'une simple comparaison de
1611 préfixes. L'expression rationnelle spécifiée est comparée à
1612 l'<var>url</var>, et si elle correspond, le serveur va substituer
1613 toute correspondance entre parenthèses dans la chaîne donnée et
1614 l'utiliser comme nouvelle <var>url</var>.</p>
1616 <note><strong>Note : </strong>Cette directive ne peut pas être
1617 utilisée dans un contexte de niveau répertoire.</note>
1619 <p>Supposons que le serveur local a pour adresse
1620 <code>http://example.com/</code> ; alors</p>
1622 <highlight language="config">
1623 ProxyPassMatch "^(/.*\.gif)$" "http://backend.example.com/$1"
1626 <p>va provoquer la conversion interne de la requête locale
1627 <code>http://example.com/foo/bar.gif</code> en une requête mandatée
1628 pour <code>http://backend.example.com/foo/bar.gif</code>.</p>
1630 <note><title>Note</title>
1631 <p>L'argument URL doit pouvoir être interprété en tant qu'URL
1632 <em>avant</em> les substitutions d'expressions rationnelles (et
1633 doit aussi l'être après). Ceci limite les correspondances que vous
1634 pouvez utiliser. Par exemple, si l'on avait utilisé</p>
1635 <highlight language="config">
1636 ProxyPassMatch "^(/.*\.gif)$"
1637 "http://backend.example.com:8000$1"
1639 <p>dans l'exemple précédent, nous aurions provoqué une erreur de
1640 syntaxe au démarrage du serveur. C'est une bogue (PR 46665 dans
1641 ASF bugzilla), et il est possible de la contourner en reformulant
1642 la correspondance :</p>
1643 <highlight language="config">
1644 ProxyPassMatch "^/(.*\.gif)$" "http://backend.example.com:8000/$1"
1648 <p>Le drapeau <code>!</code> vous permet de ne pas mandater un
1649 sous-répertoire donné.</p>
1651 <p>Dans une section <directive type="section"
1652 module="core">LocationMatch</directive>, le premier argument est
1653 omis et l'expression rationnelle est obtenue à partir de la directive
1654 <directive type="section" module="core">LocationMatch</directive>.</p>
1656 <p>Si vous avez besoin d'une configuration du mandataire inverse
1657 plus flexible, voyez la directive <directive
1658 module="mod_rewrite">RewriteRule</directive> avec le drapeau
1659 <code>[P]</code>.</p>
1662 <title>Substitution par défaut</title>
1663 <p>Lorsque le paramètre URL n'utilise pas de références arrières
1664 dans l'expression rationnelle, l'URL originale sera ajoutée au
1669 <note type="warning">
1670 <title>Avertissement à propos de la sécurité</title>
1671 <p>Lors de la construction de l'URL cible de la règle, il convient
1672 de prendre en compte l'impact en matière de sécurité qu'aura le
1673 fait de permettre au client d'influencer le jeu d'URLs pour
1674 lesquelles votre serveur agira en tant que mandataire.
1675 Assurez-vous que la partie protocole://nom-serveur de l'URL soit
1676 fixe, ou ne permette pas au client de l'influencer induement.</p>
1679 </directivesynopsis>
1682 <name>ProxyPassReverse</name>
1683 <description>Ajuste l'URL dans les en-têtes de la réponse HTTP envoyée
1684 par un serveur mandaté en inverse</description>
1685 <syntax>ProxyPassReverse [<var>chemin</var>] <var>url</var>
1686 [<var>interpolate</var>]</syntax>
1687 <contextlist><context>server config</context><context>virtual host</context>
1688 <context>directory</context>
1692 <p>Cette directive permet de faire en sorte qu'Apache httpd ajuste l'URL
1693 dans les en-têtes <code>Location</code>,
1694 <code>Content-Location</code> et <code>URI</code> des réponses de
1695 redirection HTTP. Ceci est essentiel lorsqu'Apache httpd est utilisé en
1696 tant que mandataire inverse (ou passerelle), afin d'éviter de
1697 court-circuiter le mandataire inverse suite aux redirections HTTP
1698 sur le serveur d'arrière-plan qui restent derrière le mandataire
1701 <p>Seuls les en-têtes de réponse HTTP spécialement mentionnés
1702 ci-dessus seront réécrits. Apache httpd ne réécrira ni les autres en-têtes
1703 de réponse, ni par défaut les références d'URLs dans les pages HTML. Cela
1704 signifie que dans le cas où un contenu mandaté contient des
1705 références à des URLs absolues, elles court-circuiteront le
1706 mandataire. Pour réécrire un contenu HTML afin qu'il corresponde au
1707 mandataire, vous devez charger et activer le module
1708 <module>mod_proxy_html</module>.
1711 <p><var>chemin</var> est le nom d'un chemin virtuel local.
1712 <var>url</var> est une URL partielle pour le serveur distant. Ces
1713 paramètres s'utilisent de la même façon qu'avec la directive <directive
1714 module="mod_proxy">ProxyPass</directive>.</p>
1716 <p>Supposons par exemple que le serveur local a pour adresse
1717 <code>http://example.com/</code> ; alors</p>
1719 <highlight language="config">
1720 ProxyPass "/mirror/foo/" "http://backend.example.com/"
1721 ProxyPassReverse "/mirror/foo/" "http://backend.example.com/"
1722 ProxyPassReverseCookieDomain backend.example.com public.example.com
1723 ProxyPassReverseCookiePath "/" "/mirror/foo/"
1726 <p>ne va pas seulement provoquer la conversion interne d'une requête
1727 locale pour <code>http://example.com/miroir/foo/bar</code> en une
1728 requête mandatée pour <code>http://backend.example.com/bar</code>
1729 (la fonctionnalité fournie par <code>ProxyPass</code>). Il va
1730 aussi s'occuper des redirections que le serveur
1731 <code>backend.example.com</code> envoie lorsque
1732 <code>http://backend.example.com/bar</code> est redirigé par
1733 celui-ci vers <code>http://backend.example.com/quux</code>, Apache
1734 httpd corrige ceci en <code>http://example.com/miroir/foo/quux</code>
1735 avant de faire suivre la redirection HTTP au client. Notez que le
1736 nom d'hôte utilisé pour construire l'URL est choisi en respectant la
1737 définition de la directive <directive
1738 module="core">UseCanonicalName</directive>.</p>
1740 <p>Notez que la directive <directive>ProxyPassReverse</directive>
1741 peut aussi être utilisée en conjonction avec la
1742 fonctionnalité de mandataire
1743 (<code>RewriteRule ... [P]</code>) du module
1744 <module>mod_rewrite</module>, car elle ne dépend pas d'une directive
1745 <directive module="mod_proxy">ProxyPass</directive>
1748 <p>Le mot-clé optionnel <var>interpolate</var>,
1749 utilisé en combinaison avec la directive
1750 <directive>ProxyPassInterpolateEnv</directive>, permet
1751 l'interpolation des variables d'environnement spécifiées en
1752 utilisant le format <var>${VARNAME}</var>. Notez que l'interpolation
1753 n'est pas supportée dans la partie protocole d'une URL.
1756 <p>Lorsque cette directive est utilisée dans une section <directive
1757 type="section" module="core">Location</directive>, le premier
1758 argument est omis et le répertoire local est obtenu à partir de
1759 l'argument de la directive <directive type="section"
1760 module="core">Location</directive>. Il en est de même à l'intérieur
1761 d'une section <directive type="section"
1762 module="core">LocationMatch</directive>, mais le résultat ne sera
1763 probablement pas celui attendu car ProxyPassReverse va interpréter
1764 l'expression rationnelle littéralement comme un chemin ; si besoin
1765 est dans ce cas, définissez la directive ProxyPassReverse en dehors
1766 de la section, ou dans une section <directive type="section"
1767 module="core">Location</directive> séparée.</p>
1769 <p>Cette directive ne peut pas être placée dans une section
1770 <directive type="section" module="core">Directory</directive> ou
1771 <directive type="section" module="core">Files</directive>.</p>
1773 </directivesynopsis>
1776 <name>ProxyPassReverseCookieDomain</name>
1777 <description>Ajuste la chaîne correspondant au domaine dans les en-têtes
1778 Set-Cookie en provenance d'un serveur mandaté</description>
1779 <syntax>ProxyPassReverseCookieDomain <var>domaine-interne</var>
1780 <var>domaine-public</var> [<var>interpolate</var>]</syntax>
1781 <contextlist><context>server config</context><context>virtual host</context>
1782 <context>directory</context>
1785 <p>L'utilisation de cette directive est similaire à celle de la
1786 directive <directive module="mod_proxy">ProxyPassReverse</directive>,
1787 mais au lieu de réécrire des en-têtes qui contiennent des URLs, elle
1788 réécrit la chaîne correspondant au domaine dans les en-têtes
1789 <code>Set-Cookie</code>.</p>
1791 </directivesynopsis>
1795 <name>ProxyPassReverseCookiePath</name>
1796 <description>Ajuste la chaîne correspondant au chemin dans les en-têtes
1797 Set-Cookie en provenance d'un serveur mandaté</description>
1798 <syntax>ProxyPassReverseCookiePath <var>chemin-interne</var>
1799 <var>chemin-public</var> [<var>interpolate</var>]</syntax>
1800 <contextlist><context>server config</context><context>virtual host</context>
1801 <context>directory</context>
1805 Cette directive s'avère utile en conjonction avec la directive
1806 <directive module="mod_proxy">ProxyPassReverse</directive> dans les
1807 situations où les chemins d'URL d'arrière-plan correspondent à des
1808 chemins publics sur le mandataire inverse. Cette directive permet de
1809 réécrire la chaîne <code>path</code> dans les en-têtes
1810 <code>Set-Cookie</code>. Si le début du chemin du cookie correspond à
1811 <var>chemin-interne</var>, le chemin du cookie sera remplacé par
1812 <var>chemin-public</var>.
1814 Dans l'exemple fourni avec la directive <directive
1815 module="mod_proxy">ProxyPassReverse</directive>, la directive :
1817 <highlight language="config">
1818 ProxyPassReverseCookiePath "/" "/mirror/foo/"
1821 va réécrire un cookie possédant un chemin d'arrière-plan <code>/</code>
1822 (ou <code>/example</code> ou en fait tout chemin)
1823 en <code>/mirror/foo/</code>..
1826 </directivesynopsis>
1829 <name>ProxyBlock</name>
1830 <description>Interdit les requêtes mandatées vers certains hôtes</description>
1831 <syntax>ProxyBlock *|<var>nom d'hôte</var>|<var>nom d'hôte partiel</var>
1832 [<var>nom d'hôte</var>|<var>nom d'hôte partiel</var>]...</syntax>
1833 <contextlist><context>server config</context><context>virtual host</context>
1837 <p>La directive <directive>ProxyBlock</directive> permet d'interdire
1838 l'accès FTP ou HTTP via le mandataire à certains hôtes en fonction
1839 d'une correspondance exacte ou partielle avec un nom d'hôte, ou dans
1840 la mesure du possible en fonction d'une comparaison d'adresses IP.</p>
1842 <p>Chaque paramètre de la directive
1843 <directive>ProxyBlock</directive> accepte comme valeur soit
1844 <code>*</code>, soit une chaîne alphanumérique. Au démarrage, le
1845 module tente de résoudre toute chaîne alphanumérique depuis un nom
1846 DNS vers un jeu d'adresses IP, mais toute erreur de DNS est ignorée.</p>
1848 <p>Si un paramètre a pour valeur "<code>*</code>",
1849 <module>mod_proxy</module> interdira l'accès à tout site FTP ou
1852 <p>Dans le cas contraire, pour toute requête vers une ressource FTP
1853 ou HTTP via le mandataire, <module>mod_proxy</module> va comparer le
1854 nom d'hôte de l'URI de la requête avec chaque chaîne alphanumérique
1855 spécifiée. Si une chaîne correspond, même partiellement, l'accès est
1856 refusé. Si aucune chaîne ne correspond, et si un mandataire distant
1857 (forward) est configuré via la directive
1858 <directive>ProxyRemote</directive> ou
1859 <directive>ProxyRemoteMatch</directive>, l'accès est autorisé. Si
1860 aucun mandataire distant (forward) n'est configuré, l'adresse IP
1861 correspondant au nom d'hôte de l'URI est comparée à toutes les
1862 adresses IP résolues au démarrage, et l'accès est refusé si une
1863 correspondance est trouvée.</p>
1865 <p>Notez que les recherches DNS peuvent ralentir le processus de
1866 démarrage du serveur.</p>
1868 <example><title>Exemple</title>
1869 <highlight language="config">
1870 ProxyBlock news.example.com auctions.example.com friends.example.com
1874 <p>Notez qu'<code>example</code> suffirait aussi pour atteindre
1877 <p>Hosts conviendrait aussi s'il était référencé par adresse IP.</p>
1879 <p>Notez aussi que</p>
1881 <highlight language="config">
1885 <p>bloque les connexions vers tous les sites.</p>
1887 </directivesynopsis>
1890 <name>ProxyReceiveBufferSize</name>
1891 <description>Taille du tampon réseau pour les connexions mandatées HTTP
1892 et FTP</description>
1893 <syntax>ProxyReceiveBufferSize <var>octets</var></syntax>
1894 <default>ProxyReceiveBufferSize 0</default>
1895 <contextlist><context>server config</context><context>virtual host</context>
1899 <p>La directive <directive>ProxyReceiveBufferSize</directive> permet
1900 de spécifier une taille de tampon réseau explicite (TCP/IP) pour les
1901 connexions mandatées HTTP et FTP, afin d'améliorer le débit de
1902 données. Elle doit être supérieure à <code>512</code> ou définie à
1903 <code>0</code> pour indiquer que la taille de tampon par défaut du
1904 système doit être utilisée.</p>
1906 <example><title>Exemple</title>
1907 <highlight language="config">
1908 ProxyReceiveBufferSize 2048
1912 </directivesynopsis>
1915 <name>ProxyIOBufferSize</name>
1916 <description>Détermine la taille du tampon interne de transfert de
1917 données</description>
1918 <syntax>ProxyIOBufferSize <var>octets</var></syntax>
1919 <default>ProxyIOBufferSize 8192</default>
1920 <contextlist><context>server config</context><context>virtual host</context>
1924 <p>La directive <directive>ProxyIOBufferSize</directive> permet
1925 d'ajuster la taille du tampon interne utilisé comme bloc-note pour
1926 les transferts de données entre entrée et sortie. La taille minimale
1927 est de <code>512</code> octets.</p>
1929 <p>Dans la plupart des cas, il n'y a aucune raison de modifier cette
1932 <p>Si elle est utilisée avec AJP, cette directive permet de définir
1933 la taille maximale du paquet AJP en octets. Si la valeur spécifiée
1934 est supérieure à 65536, elle est corrigée et prend la valeur 65536.
1935 Si vous ne conservez pas
1936 la valeur par défaut, vous devez aussi modifier l'attribut
1937 <code>packetSize</code> de votre connecteur AJP du côté de Tomcat !
1938 L'attribut <code>packetSize</code> n'est disponible que dans Tomcat
1939 <code>5.5.20+</code> et <code>6.0.2+</code>.</p>
1940 <p>Il n'est normalement pas nécessaire de modifier la taille
1941 maximale du paquet. Des problèmes ont cependant été rapportés avec
1942 la valeur par défaut lors de l'envoi de certificats ou de chaînes de
1946 </directivesynopsis>
1949 <name>ProxyMaxForwards</name>
1950 <description>Nombre maximum de mandataires à travers lesquelles une
1951 requête peut être redirigée</description>
1952 <syntax>ProxyMaxForwards <var>nombre</var></syntax>
1953 <default>ProxyMaxForwards -1</default>
1954 <contextlist><context>server config</context><context>virtual host</context>
1958 <p>La directive <directive>ProxyMaxForwards</directive> permet de
1959 spécifier le nombre maximum de mandataires à travers lesquels une
1960 requête peut passer dans le cas où la la requête ne contient pas
1961 d'en-tête <code>Max-Forwards</code>. Ceci permet de se prémunir
1962 contre les boucles infinies de mandataires ou contre les attaques de
1963 type déni de service.</p>
1965 <example><title>Exemple</title>
1966 <highlight language="config">
1971 <p>Notez que la définition de la directive
1972 <directive>ProxyMaxForwards</directive> constitue une violation du
1973 protocole HTTP/1.1 (RFC2616), qui interdit à un mandataire de
1974 définir <code>Max-Forwards</code> si le client ne l'a pas fait
1975 lui-même. Les versions précédentes d'Apache httpd la définissaient
1976 systématiquement. Une valeur négative de
1977 <directive>ProxyMaxForwards</directive>, y compris la valeur par
1978 défaut -1, implique un comportement compatible avec le protocole,
1979 mais vous expose aux bouclages infinis.</p>
1981 </directivesynopsis>
1984 <name>NoProxy</name>
1985 <description>Serveurs, domaines ou réseaux auquels on se connectera
1986 directement</description>
1987 <syntax>NoProxy <var>domaine</var> [<var>domaine</var>] ...</syntax>
1988 <contextlist><context>server config</context><context>virtual host</context>
1992 <p>Cette directive n'a d'utilité que pour les serveurs mandataires
1993 Apache httpd au sein d'Intranets. La directive
1994 <directive>NoProxy</directive> permet de spécifier une liste de
1995 sous-réseaux, d'adresses IP, de serveurs et/ou de domaines séparés
1996 par des espaces. Une requête pour un serveur qui correspond à un ou
1997 plusieurs critères sera toujours servie par ce serveur directement,
1998 sans être redirigée vers le(s) serveur(s) mandataire(s) défini(s) par
1999 la directive <directive
2000 module="mod_proxy">ProxyRemote</directive>.</p>
2002 <example><title>Exemple</title>
2003 <highlight language="config">
2004 ProxyRemote * http://firewall.example.com:81
2005 NoProxy .example.com 192.168.112.0/21
2009 <p>Le type des arguments <var>serveur</var> de la directive
2010 <directive>NoProxy</directive> appartiennent à la liste suivante
2014 <!-- ===================== Domain ======================= -->
2015 <dt><var><a name="domain" id="domain">Domaine</a></var></dt>
2017 <p>Un <dfn>domaine</dfn> est ici un nom de domaine DNS partiellement
2018 qualifié précédé d'un point. Il représente une liste de serveurs qui
2019 appartiennent logiquement au même domaine ou à la même zonz DNS
2020 (en d'autres termes, les nom des serveurs se terminent tous par
2021 <var>domaine</var>).</p>
2023 <example><title>Exemple</title>
2027 <p>Pour faire la distinction entre <var>domaine</var>s et <var><a
2028 href="#hostname">nom d'hôte</a></var>s (des points de vue à la fois
2030 sémantique, un domaine DNS pouvant aussi avoir un enregistrement DNS
2031 de type A !), les <var>domaine</var>s sont toujours spécifiés en les
2032 préfixant par un point.</p>
2034 <note><title>Note</title>
2035 <p>Les comparaisons de noms de domaines s'effectuent sans tenir
2036 compte de la casse, et les parties droites des <var>Domaine</var>s
2037 sont toujours censées correspondre à la racine de l'arborescence
2038 DNS, si bien que les domaines <code>.ExEmple.com</code> et
2039 <code>.example.com.</code> (notez le point à la fin du nom) sont
2040 considérés comme identiques. Comme une comparaison de domaines ne
2041 nécessite pas de recherche DNS, elle est beaucoup plus efficace
2042 qu'une comparaison de sous-réseaux.</p>
2045 <!-- ===================== SubNet ======================= -->
2046 <dt><var><a name="subnet" id="subnet">Sous-réseau</a></var></dt>
2048 <p>Un <dfn>Sous-réseau</dfn> est une adresse internet partiellement
2049 qualifiée sous forme numérique (quatre nombres séparés par des
2050 points), optionnellement suivie d'un slash et du masque de
2051 sous-réseau spécifiant le nombre de bits significatifs dans le
2052 <var>Sous-réseau</var>. Il représente un sous-réseau de serveurs qui
2053 peuvent être atteints depuis la même interface réseau. En l'absence
2054 de masque de sous-réseau explicite, il est sous-entendu que les
2055 digits manquants (ou caractères 0) de fin spécifient le masque de
2056 sous-réseau (Dans ce cas, le masque de sous-réseau ne peut être
2057 qu'un multiple de 8). Voici quelques exemples :</p>
2060 <dt><code>192.168</code> ou <code>192.168.0.0</code></dt>
2061 <dd>le sous-réseau 192.168.0.0 avec un masque de sous-réseau
2062 implicite de 16 bits significatifs (parfois exprimé sous la forme
2063 <code>255.255.0.0</code>)</dd>
2064 <dt><code>192.168.112.0/21</code></dt>
2065 <dd>le sous-réseau <code>192.168.112.0/21</code> avec un masque de
2066 sous-réseau implicite de 21 bits significatifs (parfois exprimé
2067 sous la forme<code>255.255.248.0</code>)</dd>
2070 <p>Comme cas extrêmes, un <em>Sous-réseau</em> avec un masque de
2071 sous-réseau de 32 bits significatifs est équivalent à une <var><a
2072 href="#ipaddr">adresse IP</a></var>, alors qu'un <em>Sous-réseau</em> avec un masque de
2073 sous-réseau de 0 bit significatif (c'est à dire 0.0.0.0/0) est
2074 identique à la constante <var>_Default_</var>, et peut correspondre
2075 à toute adresse IP.</p></dd>
2077 <!-- ===================== IPAddr ======================= -->
2078 <dt><var><a name="ipaddr" id="ipaddr">Adresse IP</a></var></dt>
2080 <p>Une <dfn>Adresse IP</dfn> est une adresse internet pleinement
2081 qualifiée sous forme numérique (quatre nombres séparés par des
2082 points). En général, cette adresse représente un serveur, mais elle
2083 ne doit pas nécessairement correspondre à un nom de domaine DNS.</p>
2084 <example><title>Exemple</title>
2088 <note><title>Note</title>
2089 <p>Une <dfn>Adresse IP</dfn> ne nécessite pas de résolution DNS,
2090 et peut ainsi s'avérer plus efficace quant aux performances
2094 <!-- ===================== Hostname ======================= -->
2095 <dt><var><a name="hostname" id="hostname">Nom de serveur</a></var></dt>
2097 <p>Un <dfn>Nom de serveur</dfn> est un nom de domaine DNS pleinement
2098 qualifié qui peut être résolu en une ou plusieurs adresses IP par le
2099 service de noms de domaines DNS. Il représente un hôte logique (par
2100 opposition aux <var><a href="#domain">Domaine</a></var>s, voir
2101 ci-dessus), et doit pouvoir être résolu en une ou plusieurs <var><a
2102 href="#ipaddr">adresses IP</a></var> (ou souvent en une liste
2103 d'hôtes avec différentes <var><a href="#ipaddr">adresses
2106 <example><title>Exemples</title>
2107 prep.ai.example.edu<br />
2111 <note><title>Note</title>
2112 <p>Dans de nombreuses situations, il est plus efficace de
2113 spécifier une <var><a href="#ipaddr">adresse IP</a></var> qu'un
2114 <var>Nom de serveur</var> car cela évite d'avoir à effectuer une
2115 recherche DNS. La résolution de nom dans Apache httpd peut prendre un
2116 temps très long lorsque la connexion avec le serveur de noms
2117 utilise une liaison PPP lente.</p>
2118 <p>Les comparaisons de <var>Nom de serveur</var> s'effectuent sans tenir
2119 compte de la casse, et les parties droites des <var>Noms de serveur</var>
2120 sont toujours censées correspondre à la racine de l'arborescence
2121 DNS, si bien que les domaines <code>WWW.ExEmple.com</code> et
2122 <code>www.example.com.</code> (notez le point à la fin du nom) sont
2123 considérés comme identiques.</p>
2127 <seealso><a href="../dns-caveats.html">Problèmes liés au DNS</a></seealso>
2128 </directivesynopsis>
2131 <name>ProxyTimeout</name>
2132 <description>Délai d'attente réseau pour les requêtes
2133 mandatées</description>
2134 <syntax>ProxyTimeout <var>secondes</var></syntax>
2135 <default>Valeur de la directive <directive
2136 module="core">Timeout</directive></default>
2137 <contextlist><context>server config</context><context>virtual host</context>
2141 <p>Cette directive permet à l'utilisateur de spécifier un délai pour
2142 les requêtes mandatées. Ceci s'avère utile dans le cas d'un serveur
2143 d'applications lent et bogué qui a tendance à se bloquer, et si vous
2144 préférez simplement renvoyer une erreur timeout et abandonner la
2145 connexion en douceur plutôt que d'attendre jusqu'à ce que le serveur
2146 veuille bien répondre.</p>
2148 </directivesynopsis>
2151 <name>ProxyDomain</name>
2152 <description>Nom de domaine par défaut pour les requêtes
2153 mandatées</description>
2154 <syntax>ProxyDomain <var>Domaine</var></syntax>
2155 <contextlist><context>server config</context><context>virtual host</context>
2159 <p>Cette directive n'a d'utilité que pour les serveurs mandataires
2160 Apache httpd au sein d'un Intranet. La directive
2161 <directive>ProxyDomain</directive> permet de spécifier le domaine
2162 par défaut auquel le serveur mandataire apache appartient. Si le
2163 serveur reçoit une requête pour un hôte sans nom de domaine, il va
2164 générer une réponse de redirection vers le même hôte suffixé par le
2165 <var>Domaine</var> spécifié.</p>
2167 <example><title>Exemple</title>
2168 <highlight language="config">
2169 ProxyRemote "*" "http://firewall.example.com:81"
2170 NoProxy ".example.com" "192.168.112.0/21"
2171 ProxyDomain ".example.com"
2175 </directivesynopsis>
2178 <name>ProxyVia</name>
2179 <description>Information fournie dans l'en-tête de réponse HTTP
2180 <code>Via</code> pour les requêtes mandatées</description>
2181 <syntax>ProxyVia On|Off|Full|Block</syntax>
2182 <default>ProxyVia Off</default>
2183 <contextlist><context>server config</context><context>virtual host</context>
2187 <p>Cette directive permet de contrôler l'utilisation de l'en-tête
2188 HTTP <code>Via:</code> par le mandataire. Le but recherché est de
2189 contrôler le flux des requêtes mandatées tout au long d'une chaîne
2190 de serveurs mandataires. Voir <a
2191 href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> (HTTP/1.1),
2192 section 14.45 pour une description des lignes d'en-tête
2193 <code>Via:</code>.</p>
2196 <li>Si elle est définie à <code>Off</code>, valeur par défaut, cette
2197 directive n'effectue aucun traitement particulier. Si une requête ou
2198 une réponse contient un en-tête <code>Via:</code>, il est transmis
2199 sans modification.</li>
2201 <li>Si elle est définie à <code>On</code>, chaque requête ou réponse
2202 se verra ajouter une ligne d'en-tête <code>Via:</code> pour le
2203 serveur courant.</li>
2205 <li>Si elle est définie à <code>Full</code>, chaque ligne d'en-tête
2206 <code>Via:</code> se verra ajouter la version du serveur Apache
2207 httpd sous la forme d'un champ de commentaire <code>Via:</code>.</li>
2209 <li>Si elle est définie à <code>Block</code>, chaque requête
2210 mandatée verra ses lignes d'en-tête <code>Via:</code> supprimées.
2211 Aucun nouvel en-tête <code>Via:</code> ne sera généré.</li>
2214 </directivesynopsis>
2217 <name>ProxyErrorOverride</name>
2218 <description>Outrepasser les pages d'erreur pour les contenus
2219 mandatés</description>
2220 <syntax>ProxyErrorOverride On|Off</syntax>
2221 <default>ProxyErrorOverride Off</default>
2222 <contextlist><context>server config</context><context>virtual host</context>
2223 <context>directory</context>
2227 <p>Cette directive est utile pour les configurations de mandataires
2228 inverses, lorsque vous souhaitez que les pages d'erreur envoyées
2229 aux utilisateurs finaux présentent un aspect homogène. Elle permet
2230 aussi l'inclusion de fichiers (via les SSI de
2231 <module>mod_include</module>) pour obtenir le code d'erreur et agir
2232 en conséquence (le comportement par défaut afficherait la page
2233 d'erreur du serveur mandaté, alors que c'est le message d'erreur SSI
2234 qui sera affiché si cette directive est à "on").</p>
2236 <p>Cette directive n'affecte pas le traitement des réponses
2237 informatives (1xx), de type succès normal (2xx), ou de redirection
2240 </directivesynopsis>
2243 <name>ProxyPassInterpolateEnv</name>
2244 <description>Active l'interpolation des variables d'environnement dans
2245 les configurations de mandataires inverses</description>
2246 <syntax>ProxyPassInterpolateEnv On|Off</syntax>
2247 <default>ProxyPassInterpolateEnv Off</default>
2248 <contextlist><context>server config</context> <context>virtual host</context>
2249 <context>directory</context>
2253 <p>Cette directive, ainsi que l'argument <var>interpolate</var> des
2254 directives <directive>ProxyPass</directive>,
2255 <directive>ProxyPassReverse</directive>,
2256 <directive>ProxyPassReverseCookieDomain</directive> et
2257 <directive>ProxyPassReverseCookiePath</directive>, permet de
2258 configurer dynamiquement un mandataire inverse à l'aide de
2259 variables d'environnement, ces dernières pouvant être définies par un
2260 autre module comme <module>mod_rewrite</module>. Elle affecte les
2261 directives <directive>ProxyPass</directive>,
2262 <directive>ProxyPassReverse</directive>,
2263 <directive>ProxyPassReverseCookieDomain</directive>, et
2264 <directive>ProxyPassReverseCookiePath</directive>, en leur indiquant
2265 de remplacer la chaîne <code>${nom_var}</code> dans les directives
2266 de configuration par la valeur de la variable d'environnement
2267 <code>nom_var</code> si l'option <var>interpolate</var> est
2269 <p>Conservez cette directive à off (pour les performances du
2270 serveur), sauf si vous en avez réellement besoin.</p>
2272 </directivesynopsis>
2275 <name>ProxyStatus</name>
2276 <description>Affiche l'état du répartiteur de charge du mandataire dans
2277 mod_status</description>
2278 <syntax>ProxyStatus Off|On|Full</syntax>
2279 <default>ProxyStatus Off</default>
2280 <contextlist><context>server config</context>
2281 <context>virtual host</context>
2285 <p>Cette directive permet de spécifier si les données d'état du
2286 répartiteur de charge du mandataire doivent être affichées via la
2287 page d'état du serveur du module <module>mod_status</module>.</p>
2288 <note><title>Note</title>
2289 <p>L'argument <strong>Full</strong> produit le même effet que
2290 l'argument <strong>On</strong>.</p>
2294 </directivesynopsis>
2297 <name>ProxyAddHeaders</name>
2298 <description>Ajoute des informations à propos du mandataire aux
2299 en-têtes X-Forwarded-*</description>
2300 <syntax>ProxyAddHeaders Off|On</syntax>
2301 <default>ProxyAddHeaders On</default>
2302 <contextlist><context>server config</context>
2303 <context>virtual host</context>
2304 <context>directory</context>
2306 <compatibility>Disponible depuis la version 2.3.10</compatibility>
2309 <p>Cette directive permet de passer au serveur d'arrière-plan des
2310 informations à propos du mandataire via les en-têtes HTTP
2311 X-Forwarded-For, X-Forwarded-Host et X-Forwarded-Server.</p>
2312 <note><title>Utilité</title>
2313 <p>Cette option n'est utile que dans le cas du mandat HTTP traité
2314 par <module>mod_proxy_http</module>.</p>
2317 </directivesynopsis>
2320 <name>ProxySourceAddress</name>
2321 <description>Définit l'adresse IP locale pour les connexions mandatées
2322 sortantes</description>
2323 <syntax>ProxySourceAddress <var>adresse</var></syntax>
2324 <contextlist><context>server config</context>
2325 <context>virtual host</context>
2327 <compatibility>Disponible depuis la version 2.3.9</compatibility>
2330 <p>Cette directive permet de définir une adresse IP locale
2331 spécifique à laquelle faire référence lors d'une connexion à un
2332 serveur d'arrière-plan.</p>
2335 </directivesynopsis>