]> granicus.if.org Git - apache/blob - docs/manual/howto/reverse_proxy.html.fr.utf8
Fix xml validation error
[apache] / docs / manual / howto / reverse_proxy.html.fr.utf8
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>Guide de configuration d'un mandataire inverse - Serveur HTTP Apache Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body id="manual-page"><div id="page-header">
19 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
20 <p class="apache">Serveur HTTP Apache Version 2.5</p>
21 <img alt="" src="../images/feather.png" /></div>
22 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
23 <div id="path">
24 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Guide de configuration d'un mandataire inverse</h1>
25 <div class="toplang">
26 <p><span>Langues Disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27 <a href="../es/howto/reverse_proxy.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
28 <a href="../fr/howto/reverse_proxy.html" title="Français">&nbsp;fr&nbsp;</a></p>
29 </div>
30
31     <p>En plus de ses fonctions de serveur web "basique", à savoir fournir du
32     contenu statique et dynamique à l'utilisateur, Apache httpd (comme la
33     plupart des autres serveurs web) peut aussi assurer les fonctions de serveur
34     mandataire inverse, connu aussi sous le nom de serveur "passerelle".</p>
35
36     <p>Dans un tel scénario, httpd ne génère et n'héberge pas lui-même les
37     données, le contenu étant en général obtenu à partir d'un ou plusieurs serveurs
38     d'arrière-plan qui n'ont normalement aucune connexion directe avec le réseau
39     externe. Lorsque httpd reçoit une requête en provenance d'un client, la
40     requête proprement dite est <em>mandatée</em> vers un de ces serveurs
41     d'arrière-plan qui traite la requête, génère le contenu et l'envoie à httpd,
42     ce dernier générant la véritable réponse HTTP à destination du client.</p>
43
44     <p>De nombreuses raisons peuvent vous motiver à utiliser cette
45     fonctionnalité, mais elles sont souvent du domaine de la sécurité, de
46     la haute disponibilité, de la répartition de charge et de
47     l'authentification/autorisation centralisée. Il est alors indispensable que
48     l'organisation, la conception et l'architecture de l'infrastructure
49     d'arrière-plan (les serveurs qui traitent au sens propre les requêtes) soient
50     isolées et protégées de l'extérieur ; vu du client, le serveur mandataire
51     inverse <em>est</em> le seul serveur accessible pouvant lui fournir du
52     contenu.</p>
53
54     <p>Voici un exemple typique d'implémentation de cette fonctionnalité :</p>
55     <p class="centered"><img src="../images/reverse-proxy-arch.png" alt="reverse-proxy-arch" /></p>
56
57   </div>
58 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Mandataire inverse</a></li>
59 <li><img alt="" src="../images/down.gif" /> <a href="#simple">Mandatement inverse simple</a></li>
60 <li><img alt="" src="../images/down.gif" /> <a href="#cluster">Clusters et Balancers</a></li>
61 <li><img alt="" src="../images/down.gif" /> <a href="#config">Configuration du Balancer et des BalancerMembers</a></li>
62 <li><img alt="" src="../images/down.gif" /> <a href="#failover">Gestion des indisponibilités (Failover)</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#manager">Gestion du répartiteur de charge</a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#health-check">Vérification dynamique du bon fonctionnement d'un serveur
65     d'arrière-plan</a></li>
66 <li><img alt="" src="../images/down.gif" /> <a href="#status">Drapeaux d'état d'un membre du groupe de répartition de charge</a></li>
67 </ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
68 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
69 <div class="section">
70 <h2><a name="related" id="related">Mandataire inverse</a><a title="Lien permanent" href="#related" class="permalink">&para;</a></h2>
71   
72   <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li><li><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></li><li><code class="module"><a href="../mod/mod_proxy_hcheck.html">mod_proxy_hcheck</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code></li><li><code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code></li></ul></td></tr></table>
73   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
74 <div class="section">
75 <h2><a name="simple" id="simple">Mandatement inverse simple</a><a title="Lien permanent" href="#simple" class="permalink">&para;</a></h2>
76     
77
78     <p>
79       La directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> permet de
80       rediriger les requêtes entrantes vers un serveur d'arrière-plan (ou un
81       cluster de serveurs plus connu sous le nom de groupe
82       <code>Balancer</code>). Dans cet exemple le plus simple, toutes les
83       requêtes (<code>"/"</code>) sont redirigées vers un serveur d'arrière-plan
84       unique :
85     </p>
86
87     <pre class="prettyprint lang-config">ProxyPass "/"  "http://www.example.com/"</pre>
88
89
90     <p>
91       Pour être sur que cette redirection soit effectuée et que les en-têtes
92       <code>Location:</code> générés par le serveur d'arrière-plan soient
93       modifiés pour pointer vers le mandataire inverse, et non vers le serveur
94       d'arrière-plan, la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypassreverse">ProxyPassReverse</a></code> est souvent requise :
95     </p>
96
97     <pre class="prettyprint lang-config">ProxyPass "/"  "http://www.example.com/"
98 ProxyPassReverse "/"  "http://www.example.com/"</pre>
99
100
101     <p>Seules des URIs spécifiques peuvent être mandatées, comme le montre
102     l'exemple suivant :</p>
103
104     <pre class="prettyprint lang-config">ProxyPass "/images"  "http://www.example.com/"
105 ProxyPassReverse "/images"  "http://www.example.com/"</pre>
106
107
108     <p>Dans l'exemple précédent, si le chemin d'une requête commence par
109     <code>/images</code>, elle sera redirigée vers le serveur d'arrière-plan
110     spécifié ; dans le cas contraire, elle sera traitée localement.
111     </p>
112   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
113 <div class="section">
114 <h2><a name="cluster" id="cluster">Clusters et Balancers</a><a title="Lien permanent" href="#cluster" class="permalink">&para;</a></h2>
115     
116
117     <p>
118       Utiliser un serveur d'arrière-plan unique n'est cependant pas une solution
119       idéale car ce dernier peut devenir indisponible ou surchargé, et le
120       mandatement inverse vers ce serveur ne présente alors plus aucun avantage.
121       La solution réside dans la définition d'un groupe de serveurs
122       d'arrière-plan qui vont se partager le traitement des requêtes via un
123       mécanisme de répartition de charge et de gestion des indisponibilités pris
124       en charge par le mandataire. Ce groupe de répartition est plus connu sous le nom de
125       <em>cluster</em>, mais dans la terminologie d'Apache httpd, on utilise
126       plutôt le terme de <em>balancer</em>. Un balancer se définit en
127       utilisant les directives <code class="directive"><a href="../mod/mod_proxy.html#proxy">&lt;Proxy&gt;</a></code> et <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> comme suit :
128     </p>
129
130     <pre class="prettyprint lang-config">&lt;Proxy balancer://myset&gt;
131     BalancerMember http://www2.example.com:8080
132     BalancerMember http://www3.example.com:8080
133     ProxySet lbmethod=bytraffic
134 &lt;/Proxy&gt;
135
136 ProxyPass "/images/"  "balancer://myset/"
137 ProxyPassReverse "/images/"  "balancer://myset/"</pre>
138
139
140     <p>
141       Le protocole <code>balancer://</code> indique à httpd que l'on souhaite
142       créer un balancer nommé <em>myset</em>. Ce balancer comporte deux serveurs
143       d'arrière-plan référencés dans la terminologie httpd sous le nom de
144       <em>BalancerMembers</em>. Avec cet exemple, toute requête dont le chemin
145       commence par <code>/images</code> sera mandatée vers <em>un</em> des deux
146       serveurs d'arrière-plan. La directive <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> définit ici pour le balancer
147       <em>myset</em> un algorithme de
148       répartition de charge basé sur le trafic entrées/sorties.
149     </p>
150
151     <div class="note"><h3>Remarque</h3>
152       <p>
153         Les <em>BalancerMembers</em> sont aussi souvent référencés sous le terme
154         <em>workers</em>.
155       </p>
156    </div>
157
158   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
159 <div class="section">
160 <h2><a name="config" id="config">Configuration du Balancer et des BalancerMembers</a><a title="Lien permanent" href="#config" class="permalink">&para;</a></h2>
161     
162
163     <p>
164       Vous pouvez configurer de manière détaillée les <em>balancers</em> et
165       <em>workers</em> via les nombreux paramètres de la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. Par exemple, si vous souhaitez
166       que <code>http://www3.example.com:8080</code> traite avec un facteur 3 le
167       trafic avec un timeout d'une seconde, utilisez la configuration suivante :
168     </p>
169
170     <pre class="prettyprint lang-config">&lt;Proxy balancer://myset&gt;
171     BalancerMember http://www2.example.com:8080
172     BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
173     ProxySet lbmethod=bytraffic
174 &lt;/Proxy&gt;
175
176 ProxyPass "/images"  "balancer://myset/"
177 ProxyPassReverse "/images"  "balancer://myset/"</pre>
178
179
180   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
181 <div class="section">
182 <h2><a name="failover" id="failover">Gestion des indisponibilités (Failover)</a><a title="Lien permanent" href="#failover" class="permalink">&para;</a></h2>
183     
184
185     <p>
186       Vous pouvez aussi définir finement des scénarios pour les cas
187       d'indisponibilité d'un ou plusieurs serveurs d'arrière-plan en spécifiant
188       quels serveurs doivent alors prendre le relai. Dans l'exemple suivant,
189       trois scénarios sont envisagés : 
190     </p>
191     <ol>
192       <li>
193         <code>http://spare1.example.com:8080</code> et
194         <code>http://spare2.example.com:8080</code> ne sont sollicités que si
195         <code>http://www2.example.com:8080</code> ou
196         <code>http://www3.example.com:8080</code> est indisponible (un serveur
197         de remplacement sera utilisé à la place d'un membre indisponible du même
198         jeu de serveurs cibles).
199       </li>
200       <li>
201         <code>http://hstandby.example.com:8080</code> n'est sollicité que si
202         tous les autres serveurs cibles du jeu de serveurs <code>0</code> sont
203         indisponibles.
204       </li>
205       <li>
206         Les serveurs <code>http://bkup1.example.com:8080</code> et
207         <code>http://bkup2.example.com:8080</code> du jeu <code>1</code> ne seront sollicités que si
208         tous les serveurs du jeu <code>0</code>, tous les serveurs de
209         remplacement et tous les serveurs de standby sont indisponibles.
210       </li>
211     </ol>
212     <p>
213       Il est ainsi possible de définir un ou plusieurs serveurs de remplacement
214       ou de standby pour chaque jeu de serveurs du répartiteur de charge.
215     </p>    
216
217     <pre class="prettyprint lang-config">&lt;Proxy balancer://myset&gt;
218     BalancerMember http://www2.example.com:8080
219     BalancerMember http://www3.example.com:8080 loadfactor=3 timeout=1
220     BalancerMember http://spare1.example.com:8080 status=+R
221     BalancerMember http://spare2.example.com:8080 status=+R
222     BalancerMember http://hstandby.example.com:8080 status=+H
223     BalancerMember http://bkup1.example.com:8080 lbset=1
224     BalancerMember http://bkup2.example.com:8080 lbset=1
225     ProxySet lbmethod=byrequests
226 &lt;/Proxy&gt;
227
228 ProxyPass "/images/"  "balancer://myset/"
229 ProxyPassReverse "/images/"  "balancer://myset/"</pre>
230
231
232     <p>
233       Les serveurs de remplacement à chaud remplacent les serveurs indisponibles
234       du même jeu de serveurs du répartiteur de charge. Un serveur est
235       considéré comme indisponible s'il est en maintenance, arrêté ou en erreur.
236       Les serveurs de standby à chaud sont utilisés si tous les serveurs et
237       serveurs de remplacement du jeu de serveurs du répartiteur de charge sont
238       indisponibles. Les jeux de serveurs du répartiteur de charge (avec leurs
239       serveurs de standby et de remplacement à chaud respectifs) sont toujours
240       sollicités dans l'ordre du plus bas lbset vers le plus haut.
241     </p>
242
243   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
244 <div class="section">
245 <h2><a name="manager" id="manager">Gestion du répartiteur de charge</a><a title="Lien permanent" href="#manager" class="permalink">&para;</a></h2>
246     
247
248     <p>
249      L'application <em>balancer-manager</em> fournie avec le mandataire inverse
250      d'Apache httpd en est un des outils les plus utiles. Comme
251      <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>, <em>balancer-manager</em> affiche la
252      configuration et l'activité actuelles des balancers actifs. L'affichage de
253      ces informations n'est cependant pas sa seule fonction ; il permet aussi de
254      modifier la plupart d'entre elles et même d'ajouter des membres au groupe
255      de répartition de charge en temps réel. Pour activer ces fonctionnalités,
256      vous devez ajouter les lignes suivantes à votre fichier de configuration : 
257     </p>
258
259     <pre class="prettyprint lang-config">&lt;Location "/balancer-manager"&gt;
260     SetHandler balancer-manager
261     Require host localhost
262 &lt;/Location&gt;</pre>
263
264
265     <div class="warning"><h3>Avertissement</h3>
266       <p>N'activez le <em>balancer-manager</em> que si vous avez déjà <a href="../mod/mod_proxy.html#access">sécurisé votre serveur</a>.
267       Assurez-vous en particulier que l'accès à l'URL soit fortement restreint.</p>
268     </div>
269
270     <p>
271       Lorsque vous accédez au serveur mandataire avec une adresse du style
272       <code>http://rproxy.example.com/balancer-manager/</code>, la page suivante
273       s'affiche :
274     </p>
275     <p class="centered"><img src="../images/bal-man.png" alt="balancer-manager page" /></p>
276
277     <p>
278       Ce formulaire permet à l'administrateur de modifier certains paramètres,
279       de désactiver ou d'ajouter certains serveurs d'arrière-plan, et de
280       modifier les règles de répartition de charge. Par exemple, si on clique
281       sur le répartiteur, la page suivante s'affiche : 
282     </p>
283     <p class="centered"><img src="../images/bal-man-b.png" alt="balancer-manager page" /></p>
284
285     <p>
286       Si on clique sur un membre du groupe de répartition de charge, la page
287       suivante s'affiche :
288     </p>
289     <p class="centered"><img src="../images/bal-man-w.png" alt="balancer-manager page" /></p>
290
291     <p>
292       Si vous souhaitez que ces modifications soient conservées après un
293       redémarrage du serveur, assurez-vous que la directive <code class="directive"><a href="../mod/mod_proxy.html#balancerpersist">BalancerPersist</a></code> soit définie à On.
294     </p>
295
296   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
297 <div class="section">
298 <h2><a name="health-check" id="health-check">Vérification dynamique du bon fonctionnement d'un serveur
299     d'arrière-plan</a><a title="Lien permanent" href="#health-check" class="permalink">&para;</a></h2>
300     
301
302     <p>
303       Avant que le mandataire httpd ne fasse appel à un serveur d'arrière-plan, il
304       peut <em>"tester"</em> si ce dernier est disponible en définissant le
305       paramètre <code>ping</code> de ce serveur via la directive <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>. Cependant, il est souvent plus
306       judicieux de vérifier le bon fonctionnement d'un serveur <em>hors
307       bande</em> et de manière dynamique via le module
308       <code class="module"><a href="../mod/mod_proxy_hcheck.html">mod_proxy_hcheck</a></code> d'Apache httpd.
309     </p>
310
311   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
312 <div class="section">
313 <h2><a name="status" id="status">Drapeaux d'état d'un membre du groupe de répartition de charge</a><a title="Lien permanent" href="#status" class="permalink">&para;</a></h2>
314     
315
316     <p>
317       <em>balancer-manager</em> permet d'afficher et de modifier l'état d'un
318       membre du groupe de répartition de charge. Les différents états et leurs
319       significations sont les suivants :
320     </p>
321       <table class="bordered">
322         <tr><th>Drapeau</th><th>Sigle</th><th>Description</th></tr>
323         <tr><td>&nbsp;</td><td><em>Ok</em></td><td>Le serveur est disponible</td></tr>
324         <tr><td>&nbsp;</td><td><em>Init</em></td><td>Le serveur a été initialisé</td></tr>
325         <tr><td><code>D</code></td><td><em>Dis</em></td><td>Le serveur est
326         désactivé et n'accepte aucune requête ; il sera retesté automatiquement.</td></tr>
327         <tr><td><code>S</code></td><td><em>Stop</em></td><td>Le serveur a été
328         arrêté par l'administrateur ; il n'accepte aucune requête et il ne sera
329         pas retesté automatiquement.</td></tr>
330         <tr><td><code>I</code></td><td><em>Ign</em></td><td>Les erreurs
331         concernant ce serveur sont ignorées et il sera donc toujours considéré
332         comme disponible.</td></tr>
333         <tr><td><code>R</code></td><td><em>Spar</em></td><td>Le serveur cible sert de remplaçant à
334          chaud. Lorsqu'un serveur cible avec un lbset donné est inutilisable
335          (maintenance, arrêt, en erreur, etc...), un serveur de remplacement à
336          chaud libre de même lbset sera utilisé à sa place. Les remplaçants à
337          chaud permettent de s'assurer qu'un nombre déterminé de serveurs cibles
338          sera toujours disponible pour un répartiteur de charge.</td></tr>
339         <tr><td><code>H</code></td><td><em>Stby</em></td><td>Le serveur est en
340         mode hot-standby et ne sera donc utilisé que si aucun autre serveur ou
341         serveur de remplacement n'est disponible dans le jeu de serveurs du
342         répartiteur de charge.</td></tr>
343         <tr><td><code>E</code></td><td><em>Err</em></td><td>Le serveur est en
344         erreur, en général suite à un test préalable à une requête ; aucune
345         requête ne lui sera soumise, mais il sera retesté en fonction de la
346         valeur de son paramètre <code>retry</code>.</td></tr>
347         <tr><td><code>N</code></td><td><em>Drn</em></td><td>Le serveur est en
348         mode drain ; il n'acceptera de requêtes que dans le cadre des sessions
349         persistantes qui lui sont réservées et ignorera toutes les autres.</td></tr>
350         <tr><td><code>C</code></td><td><em>HcFl</em></td><td>Le serveur a échoué
351         au test dynamique de bon fonctionnement et ne sera utilisé que lorsqu'il
352         aura réussi un test ultérieur.</td></tr>
353       </table>
354   </div></div>
355 <div class="bottomlang">
356 <p><span>Langues Disponibles: </span><a href="../en/howto/reverse_proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
357 <a href="../es/howto/reverse_proxy.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
358 <a href="../fr/howto/reverse_proxy.html" title="Français">&nbsp;fr&nbsp;</a></p>
359 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
360 <script type="text/javascript"><!--//--><![CDATA[//><!--
361 var comments_shortname = 'httpd';
362 var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/reverse_proxy.html';
363 (function(w, d) {
364     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
365         d.write('<div id="comments_thread"><\/div>');
366         var s = d.createElement('script');
367         s.type = 'text/javascript';
368         s.async = true;
369         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
370         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
371     }
372     else {
373         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
374     }
375 })(window, document);
376 //--><!]]></script></div><div id="footer">
377 <p class="apache">Copyright 2018 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
378 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
379 if (typeof(prettyPrint) !== 'undefined') {
380     prettyPrint();
381 }
382 //--><!]]></script>
383 </body></html>