]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_proxy.xml.fr
xforms
[apache] / docs / manual / mod / mod_proxy.xml.fr
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 -->
7
8 <!--
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
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
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.
23 -->
24
25 <modulesynopsis metafile="mod_proxy.xml.meta">
26
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>
32
33 <summary>
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>
40     </note>
41
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
47     modules tiers.</p>
48
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
53     doit comporter :</p>
54
55     <ul>
56       <li><module>mod_proxy</module>, qui fournit les fonctionnalités de
57       base d'un mandataire</li>
58
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>
63
64       <li>un ou plusieurs modules de types de mandataire, ou protocoles
65       :
66
67         <table border="1">
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>
71         <tr><td>CONNECT (pour
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>
79         </table>
80       </li>
81     </ul>
82
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>
90 </summary>
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>
102
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>
108
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>
118
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
123       réseau.</p>
124
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>
133
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>
141
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>
150
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 -->
159
160     <section id="examples"><title>Exemples simples</title>
161
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>
166
167     <p>Si en outre, vous désirez activer la mise en cache, consultez la
168     documentation de <module>mod_cache</module>.</p>
169
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"
174     </highlight>
175     </example>
176
177     <example><title>Mandataire direct</title>
178     <highlight language="config">
179 ProxyRequests On
180 ProxyVia On
181
182 &lt;Proxy *&gt;
183   Require host internal.example.com
184 &lt;/Proxy&gt;
185     </highlight>
186     </example>
187     </section> <!-- /examples -->
188
189     <section id="handler"><title>Accès via un gestionnaire</title>
190
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 :
196     </p>
197
198     <example><title>Scripts PHP et mandataire inverse</title>
199     <highlight language="config">
200 &lt;FilesMatch "\.php$"&gt;
201     SetHandler  "proxy:unix:/path/to/app.sock|fcgi://localhost/"
202 &lt;/FilesMatch&gt;
203     </highlight>
204       </example>
205
206       <p>Cette fonctionnalité est disponible à partir de la version
207       2.4.10 du serveur HTTP Apache.</p>
208
209     </section> <!-- /handler -->
210
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>
218
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
222       pooling), ni les
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>
226
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>
232
233       <example>
234       <highlight language="config">
235           ProxyPass "/example" "http://backend.example.com" connectiontimeout=5 timeout=30
236           </highlight>
237       </example>
238       
239
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>
245
246       <example>
247       <highlight language="config">
248           ProxySet http://backend.example.com connectiontimeout=5 timeout=30
249           </highlight>
250       </example>
251       
252
253       <p>ou encore via les directives <directive
254       module="mod_proxy">Proxy</directive> et <directive
255       module="mod_proxy">ProxySet</directive> :</p>
256
257       <highlight language="config">
258 &lt;Proxy http://backend.example.com&gt;
259   ProxySet connectiontimeout=5 timeout=30
260 &lt;/Proxy&gt;
261       </highlight>
262
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>
276
277       <p>L'URL qui identifie un worker correspond à l'URL de son serveur
278       original, y compris un éventuel chemin donné :</p>
279
280       <highlight language="config">
281 ProxyPass "/examples" "http://backend.example.com/examples"
282 ProxyPass "/docs" "http://backend.example.com/docs"
283       </highlight>
284
285       <p>Dans cet exemple, deux workers différents sont définis, chacun
286       d'eux utilisant des configurations et jeux de connexions
287       séparés.</p>
288
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>
294
295         <highlight language="config">
296 ProxyPass "/apps" "http://backend.example.com/" timeout=60
297 ProxyPass "/examples" "http://backend.example.com/examples" timeout=10
298         </highlight>
299
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>
309
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>
316
317       </note> <!-- /worker_sharing -->
318
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>
326
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>
331
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>
338
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>
345
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.
357         </p>
358       </note>
359
360     </section> <!-- /workers -->
361
362     <section id="access"><title>Contrôler l'accès à votre
363     mandataire</title>
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>
368
369       <highlight language="config">
370 &lt;Proxy *&gt;
371   Require ip 192.168.0
372 &lt;/Proxy&gt;
373       </highlight>
374
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>
378
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>
391
392       <p><strong>Voir aussi</strong> la variable d'environnement <a
393       href="mod_proxy_http.html#env">Proxy-Chain-Auth</a>.</p>
394
395     </section> <!-- /access -->
396
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 -->
405
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>
418
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 -->
434
435     <section id="envsettings"><title>Ajustements relatifs au
436     protocole</title>
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>
444
445       <p>Il s'agit des variables <code>force-proxy-request-1.0</code> et
446       <code>proxy-nokeepalive</code>.</p>
447
448       <highlight language="config">
449 &lt;Location "/buggyappserver/"&gt;
450   ProxyPass "http://buggyappserver:7001/foo/"
451   SetEnv force-proxy-request-1.0 1
452   SetEnv proxy-nokeepalive 1
453 &lt;/Location&gt;
454         </highlight>
455
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>
462
463     </section> <!-- /envsettings -->
464
465     <section id="request-bodies"><title>Corps de requêtes</title>
466
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>
484
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>
495
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>
499
500     </section> <!-- /request-bodies -->
501
502     <section id="x-headers"><title>En-têtes de requête du mandataire
503     inverse</title>
504
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>
511
512     <dl>
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>
520     </dl>
521
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>
530
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>
535
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>
539
540    </section> <!--/x-headers -->
541
542
543 <directivesynopsis type="section">
544 <name>Proxy</name>
545 <description>Conteneur de directives s'appliquant à des ressources
546 mandatées</description>
547 <syntax>&lt;Proxy <var>url-avec-jokers</var>&gt; ...&lt;/Proxy&gt;</syntax>
548 <contextlist><context>server config</context><context>virtual host</context>
549 </contextlist>
550
551 <usage>
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>
555
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>
559
560     <highlight language="config">
561 &lt;Proxy *&gt;
562   Require host votre-reseau.example.com
563 &lt;/Proxy&gt;
564     </highlight>
565
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>
570
571     <highlight language="config">    
572 &lt;Proxy http://example.com/foo/*&gt;
573   SetOutputFilter INCLUDES
574 &lt;/Proxy&gt;
575     </highlight>
576
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é.
582     </p>
583
584    <highlight language="config">
585 &lt;Proxy www.example.com:443&gt;
586   Require ip 192.168.0.0/16
587 &lt;/Proxy&gt;
588    </highlight>
589
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, &lt;Proxy
595       http://example.com/foo&gt; 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
601       slash.</p>
602       <p>Pour un contrôle plus fin de la correspondance des URL, voir la
603       directive <directive type="section">ProxyMatch</directive>.</p>
604     </note>
605
606 </usage>
607 <seealso><directive type="section" module="mod_proxy">ProxyMatch</directive></seealso>
608 </directivesynopsis>
609
610 <directivesynopsis>
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>
617 </contextlist>
618
619 <usage>
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>
625
626     <dl>
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>
630
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>
634
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>
641     </dl>
642 </usage>
643 </directivesynopsis>
644
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>&lt;ProxyMatch <var>regex</var>&gt; ...&lt;/ProxyMatch&gt;</syntax>
650 <contextlist><context>server config</context><context>virtual host</context>
651 </contextlist>
652
653 <usage>
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>
659
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
667     nommés.</p>
668
669 <highlight language="config">
670 &lt;ProxyMatch ^http://(?&lt;sitename&gt;[^/]+)&gt;
671     require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
672 &lt;/ProxyMatch&gt;
673 </highlight>
674 </usage>
675 <seealso><directive type="section" module="mod_proxy">Proxy</directive></seealso>
676 </directivesynopsis>
677
678 <directivesynopsis>
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>
686 </contextlist>
687 <compatibility>Utilisable
688 dans un contexte de répertoire depuis la version 2.3.3.</compatibility>
689
690 <usage>
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>
694
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
699     d'arrière-plan.</p>
700 </usage>
701 </directivesynopsis>
702
703 <directivesynopsis>
704 <name>ProxyRequests</name>
705 <description>Active la fonctionnalité (standard) de mandataire
706 direct</description>
707 <syntax>ProxyRequests On|Off</syntax>
708 <default>ProxyRequests Off</default>
709 <contextlist><context>server config</context><context>virtual host</context>
710 </contextlist>
711
712 <usage>
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>
717
718     <p>Pour une configuration typique de mandataire inverse ou
719     passerelle, cette directive doit être définie à
720     <code>Off</code>.</p>
721
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
725     serveur.</p>
726
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>
729
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>
736     </note>
737 </usage>
738 <seealso><a href="#forwardreverse">Mandataires/Passerelles directs et
739 inverses</a></seealso>
740 </directivesynopsis>
741
742 <directivesynopsis>
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>
748 </contextlist>
749
750 <usage>
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>
758
759     <example>
760       <dfn>serveur-distant</dfn> =
761           <var>protocole</var>://<var>nom-serveur</var>[:<var>port</var>]
762     </example>
763
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>
769
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
775     </highlight>
776     </example>
777
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>
781
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>
786 </usage>
787 </directivesynopsis>
788
789 <directivesynopsis>
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>
795 </contextlist>
796
797 <usage>
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
803     requête.</p>
804 </usage>
805 </directivesynopsis>
806
807 <directivesynopsis>
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>
816 <usage>
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>
822 </usage>
823 </directivesynopsis>
824
825 <directivesynopsis>
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>
835     <usage>
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>
841     </usage>
842 </directivesynopsis>
843
844 <directivesynopsis>
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>
853     <usage>
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
859         être désactivée.</p>
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>
864     </usage>
865 </directivesynopsis>
866
867 <directivesynopsis>
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>
876     <usage>
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>
888     </usage>
889 </directivesynopsis>
890
891 <directivesynopsis>
892 <name>BalancerMember</name>
893 <description>Ajoute un membre à un groupe de répartition de
894 charge</description>
895 <syntax>BalancerMember [<var>balancerurl</var>] <var>url</var> [<var
896   >clé=valeur [clé=valeur ...]]</var></syntax>
897 <contextlist><context>directory</context>
898 </contextlist>
899 <usage>
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>&lt;Proxy <var>balancer://</var>...&gt;</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>&lt;Proxy
911     <var>balancer://</var>...&gt;</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>&lt;Proxy
916     <var>balancer://</var>...&gt;</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>
919 </usage>
920 </directivesynopsis>
921
922 <directivesynopsis>
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
926 charge</description>
927 <syntax>ProxySet <var>url</var> <var>clé=valeur [clé=valeur ...]</var></syntax>
928 <contextlist><context>directory</context>
929 </contextlist>
930 <usage>
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>&lt;Proxy <var>url de répartiteur|url de
936     serveur cible</var>&gt;</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>
942
943     <example>
944       <highlight language="config">
945 &lt;Proxy balancer://hotcluster&gt;
946     BalancerMember http://www2.example.com:8080 loadfactor=1
947     BalancerMember http://www3.example.com:8080 loadfactor=2
948     ProxySet lbmethod=bytraffic
949 &lt;/Proxy&gt;
950       </highlight>
951     </example>
952
953     <highlight language="config">
954 &lt;Proxy http://backend&gt;
955     ProxySet keepalive=On
956 &lt;/Proxy&gt;
957     </highlight>
958
959     <highlight language="config">
960         ProxySet balancer://foo lbmethod=bytraffic timeout=15
961     </highlight>
962
963     <highlight language="config">
964         ProxySet ajp://backend:7001 timeout=15
965     </highlight>
966
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>
972    </note>
973
974 </usage>
975 </directivesynopsis>
976
977 <directivesynopsis>
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>
985 </contextlist>
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>
988
989 <usage>
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>
998
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>
1002
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>
1007
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>
1017
1018     <note><strong>Note :</strong>Le chemin associé à l'URL
1019     <code>unix:</code> tient compte de la directive
1020     <directive>DefaultRuntimeDir</directive>.</note>
1021
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>
1026
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>
1037     
1038     <p>Supposons que le serveur local a pour adresse
1039     <code>http://example.com/</code> ; alors la ligne</p>
1040
1041     <highlight language="config">
1042 &lt;Location "/mirror/foo/"&gt;
1043     ProxyPass "http://backend.example.com/"
1044 &lt;/Location&gt;
1045     </highlight>
1046
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>
1050
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>
1055
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>
1061
1062     <highlight language="config">
1063         ProxyPass "/miroir/foo/" "http://backend.example.com/"
1064     </highlight>
1065
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.
1072     </p>
1073     </note>
1074
1075     <p>Le drapeau <code>!</code> permet de soustraire un sous-répertoire
1076     du mandat inverse, comme dans l'exemple suivant :</p>
1077
1078     <highlight language="config">
1079 &lt;Location "/mirror/foo/"&gt;
1080     ProxyPass "http://backend.example.com/"
1081 &lt;/Location&gt;
1082 &lt;Location "/mirror/foo/i"&gt;
1083     ProxyPass "!"
1084 &lt;/Location&gt;
1085     </highlight>
1086
1087     <highlight language="config">
1088 ProxyPass "/mirror/foo/i" "!"
1089 ProxyPass "/mirror/foo" "http://backend.example.com"
1090     </highlight>
1091
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>
1095
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>
1112
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
1122       assez tôt.</p>
1123
1124     </note> <!-- /ordering_proxypass -->
1125
1126     <p><strong>ProxyPass <code>clé=valeur</code> Paramètres</strong></p>
1127
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
1135     ci-dessous.</p>
1136
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>
1147
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>
1154
1155     <example><title>Exemple</title>
1156     <highlight language="config">
1157         ProxyPass "/example" "http://backend.example.com" max=20 ttl=120 retry=300
1158         </highlight>
1159     </example>
1160
1161     <table border="2"><tr><th>Paramètres de BalancerMember</th></tr></table>
1162     <table>
1163     <tr><th>Paramètre</th>
1164         <th>Défaut</th>
1165         <th>Description</th></tr>
1166     <tr><td>min</td>
1167         <td>0</td>
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>
1173     <tr><td>max</td>
1174         <td>1...n</td>
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>
1181     <tr><td>smax</td>
1182         <td>max</td>
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>
1193         <td>-</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.
1198     </td></tr>
1199     <tr><td>connectiontimeout</td>
1200         <td>timeout</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
1205         suffixe ms.
1206     </td></tr>
1207     <tr><td>disablereuse</td>
1208         <td>Off</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>.
1219     </td></tr>
1220     <tr><td>enablereuse</td>
1221         <td>On</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.
1226     </td></tr>
1227     <tr><td>flushpackets</td>
1228         <td>off</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.
1236     </td></tr>
1237     <tr><td>flushwait</td>
1238         <td>10</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'.
1242     </td></tr>
1243     <tr><td>iobuffersize</td>
1244         <td>8192</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.
1250     </td></tr>
1251     <tr><td>keepalive</td>
1252         <td>Off</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>
1265
1266     </td></tr>
1267     <tr><td>lbset</td>
1268         <td>0</td>
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.
1273     </td></tr>
1274     <tr><td>ping</td>
1275         <td>0</td>
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.
1291
1292         Le trafic
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
1298         ms.
1299     </td></tr>
1300     <tr><td>receivebuffersize</td>
1301         <td>0</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.
1307     </td></tr>
1308     <tr><td>redirect</td>
1309         <td>-</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é.
1316     </td></tr>
1317     <tr><td>retry</td>
1318         <td>60</td>
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
1326         sans délai.
1327     </td></tr>
1328     <tr><td>route</td>
1329         <td>-</td>
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.
1333     </td></tr>
1334     <tr><td>status</td>
1335         <td>-</td>
1336         <td>Valeur constituée d'une simple lettre et définissant l'état
1337         initial de ce serveur cible.
1338          <table border="1">
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>
1353         </table>
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".
1359     </td></tr>
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.
1365     </td></tr>
1366     <tr><td>ttl</td>
1367         <td>-</td>
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.
1372     </td></tr>
1373     <tr><td>flusher</td>
1374         <td>flush</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>
1377     </td></tr>
1378     <tr><td>secret</td>
1379         <td>-</td>
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>
1382     </td></tr>
1383     <tr><td>upgrade</td>
1384         <td>WebSocket</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
1387         détails.</p>
1388     </td></tr>
1389
1390     </table>
1391
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
1401     charge.
1402     </p>
1403     <table border="2"><tr><th>Paramètres du répartiteur</th></tr></table>
1404     <table>
1405     <tr><th>Paramètre</th>
1406         <th>Défaut</th>
1407         <th>Description</th></tr>
1408     <tr><td>lbmethod</td>
1409         <td>byrequests</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>.
1419     </td></tr>
1420     <tr><td>maxattempts</td>
1421         <td>1 de moins que le nombre de workers, ou 1 avec un seul
1422         worker</td>
1423         <td>Nombre maximum d'échecs avant abandon.
1424     </td></tr>
1425     <tr><td>nofailover</td>
1426         <td>Off</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.
1431     </td></tr>
1432     <tr><td>stickysession</td>
1433         <td>-</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.
1443     </td></tr>
1444     <tr><td>stickysessionsep</td>
1445         <td>"."</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é.
1453     </td></tr>
1454     <tr><td>scolonpathdelim</td>
1455         <td>Off</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>.
1461     </td></tr>
1462     <tr><td>timeout</td>
1463         <td>0</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
1467         attendre.
1468     </td></tr>
1469     <tr><td>failonstatus</td>
1470         <td>-</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.
1476     </td></tr>
1477
1478     <tr><td>failontimeout</td>
1479         <td>Off</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.
1486     </td></tr>
1487
1488     <tr><td>nonce</td>
1489         <td>&lt;auto&gt;</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
1496         unique.
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>
1500     </note>
1501      </td></tr>
1502     <tr><td>growth</td>
1503         <td>0</td>
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
1506         configuration.
1507     </td></tr>
1508     <tr><td>forcerecovery</td>
1509         <td>On</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.
1518     </td></tr>
1519
1520     </table>
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 &lt;Proxy balancer://mycluster&gt;
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
1530 &lt;/Proxy&gt;
1531     </highlight>
1532
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 &lt;Proxy balancer://hotcluster&gt;
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
1543 &lt;/Proxy&gt;
1544     </highlight>
1545
1546     <p><strong>Mot-clés supplémentaires de ProxyPass</strong></p>
1547
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>
1557
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
1562     chaîne.</p>
1563
1564     
1565
1566     
1567
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>
1579
1580     <highlight language="config">
1581 RewriteEngine On
1582
1583 RewriteCond %{HTTPS} =off
1584 RewriteRule . - [E=protocol:http]
1585 RewriteCond %{HTTPS} =on
1586 RewriteRule . - [E=protocol:https]
1587
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/"
1591     </highlight>
1592
1593 </usage>
1594 </directivesynopsis>
1595
1596 <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>
1605 </contextlist>
1606
1607 <usage>
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>
1615
1616     <note><strong>Note : </strong>Cette directive ne peut pas être
1617     utilisée dans un contexte de niveau répertoire.</note>
1618
1619     <p>Supposons que le serveur local a pour adresse
1620     <code>http://example.com/</code> ; alors</p>
1621
1622     <highlight language="config">
1623       ProxyPassMatch "^(/.*\.gif)$" "http://backend.example.com/$1"
1624     </highlight>
1625
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>
1629
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"
1638       </highlight>
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"
1645       </highlight>
1646     </note>
1647
1648     <p>Le drapeau <code>!</code> vous permet de ne pas mandater un
1649     sous-répertoire donné.</p>
1650
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>
1655
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>
1660
1661     <note>
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
1665         paramètre URL.
1666         </p>
1667         </note>
1668
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>
1677     </note>
1678 </usage>
1679 </directivesynopsis>
1680
1681 <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>
1689 </contextlist>
1690
1691 <usage>
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
1699     inverse.</p>
1700
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>.
1709     </p>
1710
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>
1715
1716     <p>Supposons par exemple que le serveur local a pour adresse
1717     <code>http://example.com/</code> ; alors</p>
1718
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/"
1724     </highlight>
1725
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>
1739
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>
1746     correspondante.</p>
1747
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.
1754     </p>
1755
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>
1768
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>
1772 </usage>
1773 </directivesynopsis>
1774
1775 <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>
1783 </contextlist>
1784 <usage>
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>
1790 </usage>
1791 </directivesynopsis>
1792
1793
1794 <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>
1802 </contextlist>
1803 <usage>
1804 <p>
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>.
1813 </p><p>
1814 Dans l'exemple fourni avec la directive <directive
1815 module="mod_proxy">ProxyPassReverse</directive>, la directive :
1816 </p>
1817     <highlight language="config">
1818       ProxyPassReverseCookiePath  "/"  "/mirror/foo/"
1819     </highlight>
1820 <p>
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>..
1824 </p>
1825 </usage>
1826 </directivesynopsis>
1827
1828 <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>
1834 </contextlist>
1835
1836 <usage>
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>
1841
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>
1847
1848     <p>Si un paramètre a pour valeur "<code>*</code>",
1849     <module>mod_proxy</module> interdira l'accès à tout site FTP ou
1850     HTTP.</p>
1851
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>
1864
1865     <p>Notez que les recherches DNS peuvent ralentir le processus de
1866     démarrage du serveur.</p>
1867
1868     <example><title>Exemple</title>
1869     <highlight language="config">
1870       ProxyBlock news.example.com auctions.example.com friends.example.com
1871       </highlight>
1872     </example>
1873
1874     <p>Notez qu'<code>example</code> suffirait aussi pour atteindre
1875     ces sites.</p>
1876
1877     <p>Hosts conviendrait aussi s'il était référencé par adresse IP.</p>
1878
1879     <p>Notez aussi que</p>
1880
1881     <highlight language="config">
1882       ProxyBlock *
1883     </highlight>
1884
1885     <p>bloque les connexions vers tous les sites.</p>
1886 </usage>
1887 </directivesynopsis>
1888
1889 <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>
1896 </contextlist>
1897
1898 <usage>
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>
1905
1906     <example><title>Exemple</title>
1907     <highlight language="config">
1908       ProxyReceiveBufferSize 2048
1909       </highlight>
1910     </example>
1911 </usage>
1912 </directivesynopsis>
1913
1914 <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>
1921 </contextlist>
1922
1923 <usage>
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>
1928
1929     <p>Dans la plupart des cas, il n'y a aucune raison de modifier cette
1930     valeur.</p>
1931
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
1943     certificats.</p>
1944
1945 </usage>
1946 </directivesynopsis>
1947
1948 <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>
1955 </contextlist>
1956
1957 <usage>
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>
1964
1965     <example><title>Exemple</title>
1966     <highlight language="config">
1967       ProxyMaxForwards 15
1968       </highlight>
1969     </example>
1970
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>
1980 </usage>
1981 </directivesynopsis>
1982
1983 <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>
1989 </contextlist>
1990
1991 <usage>
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>
2001
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
2006     </highlight>
2007     </example>
2008
2009     <p>Le type des arguments <var>serveur</var> de la directive
2010     <directive>NoProxy</directive> appartiennent à la liste suivante
2011     :</p>
2012
2013     <dl>
2014     <!-- ===================== Domain ======================= -->
2015     <dt><var><a name="domain" id="domain">Domaine</a></var></dt>
2016     <dd>
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>
2022
2023     <example><title>Exemple</title>
2024       .com .example.org.
2025     </example>
2026
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
2029     syntaxique et
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>
2033
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>
2043     </note></dd>
2044
2045     <!-- ===================== SubNet ======================= -->
2046     <dt><var><a name="subnet" id="subnet">Sous-réseau</a></var></dt>
2047     <dd>
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>
2058
2059     <dl>
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>
2068     </dl>
2069
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>
2076
2077     <!-- ===================== IPAddr ======================= -->
2078     <dt><var><a name="ipaddr" id="ipaddr">Adresse IP</a></var></dt>
2079     <dd>
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>
2085       192.168.123.7
2086     </example>
2087
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
2091       d'Apache.</p>
2092     </note></dd>
2093
2094     <!-- ===================== Hostname ======================= -->
2095     <dt><var><a name="hostname" id="hostname">Nom de serveur</a></var></dt>
2096     <dd>
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
2104     IP</a></var>).</p>
2105
2106     <example><title>Exemples</title>
2107       prep.ai.example.edu<br />
2108       www.example.org
2109     </example>
2110
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>
2124      </note></dd>
2125     </dl>
2126 </usage>
2127 <seealso><a href="../dns-caveats.html">Problèmes liés au DNS</a></seealso>
2128 </directivesynopsis>
2129
2130 <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>
2138 </contextlist>
2139
2140 <usage>
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>
2147 </usage>
2148 </directivesynopsis>
2149
2150 <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>
2156 </contextlist>
2157
2158 <usage>
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>
2166
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"      
2172       </highlight>
2173     </example>
2174 </usage>
2175 </directivesynopsis>
2176
2177 <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>
2184 </contextlist>
2185
2186 <usage>
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>
2194
2195     <ul>
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>
2200
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>
2204
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>
2208
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>
2212     </ul>
2213 </usage>
2214 </directivesynopsis>
2215
2216 <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>
2224 </contextlist>
2225
2226 <usage>
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>
2235
2236     <p>Cette directive n'affecte pas le traitement des réponses
2237     informatives (1xx), de type succès normal (2xx), ou de redirection
2238     (3xx).</p>
2239 </usage>
2240 </directivesynopsis>
2241
2242 <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>
2250 </contextlist>
2251
2252 <usage>
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
2268     spécifiée.</p>
2269     <p>Conservez cette directive à off (pour les performances du
2270     serveur), sauf si vous en avez réellement besoin.</p>
2271 </usage>
2272 </directivesynopsis>
2273
2274 <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>
2282 </contextlist>
2283
2284 <usage>
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>
2291     </note>
2292
2293 </usage>
2294 </directivesynopsis>
2295
2296 <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>
2305 </contextlist>
2306 <compatibility>Disponible depuis la version 2.3.10</compatibility>
2307
2308 <usage>
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>
2315     </note>
2316 </usage>
2317 </directivesynopsis>
2318
2319 <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>
2326 </contextlist>
2327 <compatibility>Disponible depuis la version 2.3.9</compatibility>
2328
2329 <usage>
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>
2333
2334 </usage>
2335 </directivesynopsis>
2336
2337 </modulesynopsis>