| <!DOCTYPE html SYSTEM "about:legacy-compat"> | |
| <html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| <meta content="width=device-width, initial-scale=1" name="viewport"> | |
| <!-- | |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
| This file is generated from xml source: DO NOT EDIT | |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
| --> | |
| <title>mod_proxy_beacon - Serveur HTTP Apache Version 2.5</title> | |
| <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> | |
| <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> | |
| <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"> | |
| <script src="../style/scripts/prettify.min.js"> | |
| </script> | |
| <link href="../images/favicon.png" rel="shortcut icon"></head> | |
| <body> | |
| <div id="page-header"> | |
| <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p> | |
| <p class="apache">Serveur HTTP Apache Version 2.5</p> | |
| <img alt="" src="../images/feather.png"></div> | |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div> | |
| <div id="path"> | |
| <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div> | |
| <div id="page-content"> | |
| <div id="preamble"><h1>Module Apache mod_proxy_beacon</h1> | |
| <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> | |
| <div class="toplang"> | |
| <p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_beacon.html" hreflang="en" rel="alternate" title="English"> en </a> | | |
| <a href="../fr/mod/mod_proxy_beacon.html" title="Français"> fr </a></p> | |
| </div> | |
| <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Inscription dynamique comme membre d’un répartiteur de charge où | |
| les serveurs dorsaux s’annoncent eux-mêmes au mandataire inverse à l’aide de | |
| datagrammes UDP unicast</td></tr> | |
| <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>proxy_beacon_module</td></tr> | |
| <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_proxy_beacon.c</td></tr> | |
| <tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.5 du serveur HTTP Apache</td></tr></table> | |
| <h3>Sommaire</h3> | |
| <p>Ce module permet à des serveurs dorsaux de <em>s’annoncer eux-mêmes</em> | |
| à un mandataire inverse frontal qui les ajoute alors en tant que membre | |
| actif (worker) d’un répartiteur de charge de | |
| <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>. Lorsqu’un serveur dorsal cesse de | |
| s’annoncer, le mandataire l’enlève de la rotation. Cela permet une gestion | |
| autonome (inscriptions et maintenance) de la liste des membres du | |
| répartiteur sans avoir à éditer la configuration du mandataire ou piloter le | |
| <code>balancer-manager</code> à la main.</p> | |
| <p>La communication utilise des datagrammes pleinement <strong>unicast | |
| UDP</strong> (pas de multicast qui est filtré sur la plupart des réseaux et | |
| ne passe pas sur l’Internet public). Les données sont transmises du serveur | |
| dorsal vers le mandataire :</p> | |
| <ul> | |
| <li>Le mandataire inverse se lie à un socket UDP et <em>reçoit</em> les | |
| données sur une adresse fixe (<code class="directive">ProxyBeaconListen</code>).</li> | |
| <li>Chaque serveur dorsal <em>envoie</em> périodiquement un court | |
| datagramme d’annonce au mandataire | |
| (<code class="directive">ProxyBeaconAddress</code>), indiquant son propre URL | |
| routable (<code class="directive">ProxyBeaconAdvertise</code>).</li> | |
| </ul> | |
| <p>Les datagrammes sont envoyés en mode « fire-and-forget » : une annonce | |
| perdue est récupérée par la prochaine annonce périodique, et le | |
| réordonnancement est rejeté par une vérification d’horodatage par serveur | |
| dorsal ; aucune connexion, reconnection ou couche de cadrage n’est donc | |
| nécessaire.</p> | |
| <p>Au niveau du mandataire, la directive | |
| <code class="directive">ProxyBeaconBalancer</code> nomme le répartiteur de charge | |
| auquel des serveurs dorsaux qui se sont annoncés ont été ajoutés. Les | |
| changements d’appartenance s’appliquent en utilisant le même mécanisme | |
| interne que l’interface web <code>balancer-manager</code> ; un serveur | |
| dorsal ajouté de cette manière se comporte donc exactement comme un | |
| <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> configuré | |
| statiquement ou ajouté manuellement, et est visible et éditable dans | |
| <code>balancer-manager</code>.</p> | |
| <p>Ce module nécessite les services de <code class="module"><a href="../mod/mod_watchdog.html">mod_watchdog</a></code> et | |
| <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>. Le travail d’arrière-plan (écoute, | |
| publication, ajout et suppression de membres) est effectué par un seul | |
| processus enfant de <code class="module"><a href="../mod/mod_watchdog.html">mod_watchdog</a></code> ; il n’est donc pas | |
| disponible avec le comportement du MPM <code>prefork</code> où ce singleton | |
| ne peut pas s’exécuter.</p> | |
| <div class="warning"><h3>Authentification</h3> | |
| <p>Tout hôte qui peut atteindre le port de réception du mandataire peut | |
| aussi annoncer un URL de serveur dorsal arbitraire et faire que le | |
| mandataire envoie le trafic du client à ce dernier (et une adresse source | |
| UDP est facile à usurper). La directive | |
| <code class="directive">ProxyBeaconSecret</code> est par conséquent | |
| <strong>requise</strong> : elle doit être définie avec la même valeur sur le | |
| mandataire et sur chaque serveur dorsal, et le serveur refusera de démarrer | |
| si elle est omise sur un des serveurs impliqués. Les annonces sont | |
| authentifiées avec un code d’authentification de message avec clé (MAC) et | |
| un horodatage, et le mandataire rejette toute annonce qui n’est pas signée | |
| de manière valable ou qui est trop ancienne. Il n’existe pas de mode non | |
| autentifié.</p> | |
| </div> | |
| <div class="note"><h3>Confidentialité</h3> | |
| <p>Les annonces sont authentifiées mais non chiffrées ; la charge utile | |
| comporte des métadonnées opérationnelles (URLs de serveur dorsal) non | |
| chiffrées. La confidentialité du transport (par exemple DTLS) | |
| n’est actuellement pas prise en charge et fera l’objet d’une couche | |
| séparée.</p> | |
| </div> | |
| </div> | |
| <div id="quickview"><h3>Sujets</h3> | |
| <ul id="topics"> | |
| <li><img alt="" src="../images/down.gif"> <a href="#examples">Exemple d’utilisation</a></li> | |
| </ul><h3 class="directives">Directives</h3> | |
| <ul id="toc"> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconaddress">ProxyBeaconAddress</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconadvertise">ProxyBeaconAdvertise</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconbalancer">ProxyBeaconBalancer</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconinterval">ProxyBeaconInterval</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconlisten">ProxyBeaconListen</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconmaxskew">ProxyBeaconMaxSkew</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeaconsecret">ProxyBeaconSecret</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#proxybeacontimeout">ProxyBeaconTimeout</a></li> | |
| </ul> | |
| <h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_proxy_beacon">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_proxy_beacon">Signaler un bug</a></li></ul><h3>Voir aussi</h3> | |
| <ul class="seealso"> | |
| <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> | |
| <li><code class="module"><a href="../mod/mod_watchdog.html">mod_watchdog</a></code></li> | |
| </ul></div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="examples">Exemple d’utilisation <a title="Lien permanent" href="#examples" class="permalink">¶</a></h2> | |
| <p>L’exemple suivant configure un répartiteur de charge à enregistrement | |
| autonome. Les serveurs dorsaux n’ont pas besoin de se connaître entre eux et | |
| le mandataire n’a pas besoin d’entrées <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code> prédéclarées — seulement | |
| un répartiteur vide avec de la place pour grossir.</p> | |
| <p>Sur le <strong>mandataire inverse</strong> :</p> | |
| <pre class="prettyprint lang-config"># Réception des annonces des serveurs dorsaux sur | |
| # l’interface réseau de cluster (UDP). | |
| ProxyBeaconListen 0.0.0.0:5555 | |
| ProxyBeaconSecret "une_grande_phrase_secrète_partagée_aléatoire_de_cluster" | |
| ProxyBeaconBalancer cluster | |
| # Un serveur dorsal est éjecté de la rotation s’il ne | |
| # s’annonce pas pendant 30 secondes. | |
| ProxyBeaconTimeout 30 | |
| # Un répartiteur initialement vide avec des emplacements | |
| # libres pour les membres dynamiques. | |
| <Proxy balancer://cluster> | |
| ProxySet growth=16 | |
| </Proxy> | |
| ProxyPass "/" "balancer://cluster/" | |
| ProxyPassReverse "/" "balancer://cluster/"</pre> | |
| <p>Sur chaque <strong>serveur dorsal</strong> :</p> | |
| <pre class="prettyprint lang-config"># Annoncer au mandataire cette adresse routable de serveur dorsal | |
| # toutes les 10 secondes (UDP). | |
| ProxyBeaconAddress proxy.example.com:5555 | |
| ProxyBeaconAdvertise http://10.0.0.5:8080 | |
| ProxyBeaconSecret "une_grande_phrase_secrète_partagée_aléatoire_de_cluster" | |
| ProxyBeaconInterval 10</pre> | |
| <p>Au démarrage d’un serveur dorsal, ce dernier commence à s’annoncer. Le | |
| mandataire vérifie la validité de chaque annonce à l’aide de la phrase | |
| secrète, ajoute <code>http://10.0.0.5:8080</code> comme membre de | |
| <code>balancer://cluster</code>, et l’active. Si ce serveur dorsal arrête de | |
| s’annoncer pendant une durée supérieure à la valeur de la directive | |
| <code class="directive">ProxyBeaconTimeout</code>, le mandataire le désactive (en | |
| l’enlevant de la rotation) ; si le serveur dorsal s’annonce à nouveau, il | |
| est réactivé.</p> | |
| <div class="note"> | |
| <p>Un serveur dorsal ajouté à l’exécution occupe un des emplacements | |
| du répartiteur pour la durée de vie du processus serveur ; plutôt que de le | |
| supprimer lorsqu’il arrête de s’annoncer, il est désactivé, suivant en cela | |
| le comportement du <code>balancer-manager</code> (qui peut ajouter des | |
| membres à l’exécution, mais pas les supprimer). La taille du répartiteur | |
| <code>augmente</code> jusqu’au nombre maximal de serveurs dorsaux que vous | |
| souhaitez enregistrer.</p> | |
| </div> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconaddress">Directive <span id="ProxyBeaconAddress">ProxyBeaconAddress</span> <a title="Lien permanent" href="#proxybeaconaddress" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adresse du mandataire inverse à laquelle un serveur dorsal envoie | |
| ses annonces</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconAddress <em>address:port</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconAddress</code> marque un serveur | |
| comme <em>émetteur</em> d’annonces (un serveur dorsal). Ce dernier envoie | |
| des datagrammes UDP à l’adresse <code class="directive">ProxyBeaconListen</code> du | |
| mandataire sous la forme <em>adresse:port</em>, par exemple | |
| <code>proxy.example.com:5555</code> (un préfixe de protocole tel que | |
| <code>tcp://</code> est accepté, mais ignoré). Étant donné que UDP est sans | |
| connexion, un serveur dorsal peut être démarré avant que le mandataire soit | |
| disponible : les datagrammes seront simplement supprimés et continueront à | |
| être envoyés selon l’intervalle spécifié.</p> | |
| <p>Utilisez la directive <code class="directive">ProxyBeaconAdvertise</code> pour | |
| spécifier l’URL routable qu’annonce le serveur dorsal. Les | |
| directives <code class="directive">ProxyBeaconListen</code> et | |
| <code class="directive">ProxyBeaconAddress</code> sont mutuellement exclusives sur | |
| un même serveur.</p> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconadvertise">Directive <span id="ProxyBeaconAdvertise">ProxyBeaconAdvertise</span> <a title="Lien permanent" href="#proxybeaconadvertise" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>L’URL routable qu’annonce le serveur dorsal au mandataire inverse</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconAdvertise <em>url</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconAdvertise</code> permet de | |
| définir l’adresse à laquelle le serveur dorsal peut être atteint (par | |
| exemple <code>http://10.0.0.5:8080</code>) et que le mandataire ajoutera en | |
| tant que membre <code class="directive"><a href="../mod/mod_proxy.html#balancermember">BalancerMember</a></code>. | |
| Il doit s’agir d’un URL complet comme <code>scheme://host[:port]</code> que | |
| le mandataire pourra atteindre — pas l’adresse d’écoute locale — | |
| et qui sera validé lors de l’analyse de la configuration.</p> | |
| <p>Cette directive est utilisée sur un serveur dorsal avec la directive | |
| <code class="directive">ProxyBeaconAddress</code>. Si elle est omise, le serveur | |
| dorsal envoie quand-même un signe de vie, mais pas d’URL ; le mandataire | |
| journalise alors l’annonce sans ajouter de membre.</p> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconbalancer">Directive <span id="ProxyBeaconBalancer">ProxyBeaconBalancer</span> <a title="Lien permanent" href="#proxybeaconbalancer" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Le nom du répartiteur de charge auquel les serveurs dorsaux | |
| annoncés sont ajoutés</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconBalancer <em>name</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconBalancer</code> permet de nommer | |
| le répartiteur, sur le mandataire inverse, dans lequel les serveurs dorsaux | |
| annoncés sont insérés en tant que membres. Indiquez seulement le nom du | |
| répartiteur (par exemple <code>cluster</code> pour | |
| <code>balancer://cluster</code>) ; le préfixe <code>balancer://</code> est | |
| accepté et supprimé.</p> | |
| <p>Le répartiteur nommé doit exister et disposer d’emplacements vides. | |
| Déclarez-le dans un bloc <code class="directive"><a href="../mod/mod_proxy.html#<proxy>"><Proxy></a></code> avec un paramètre | |
| <code>growth</code> (ou utilisez la valeur de la directive <code class="directive"><a href="../mod/mod_proxy.html#balancergrowth">BalancerGrowth</a></code>) de façon qu’il y ait des | |
| emplacements libres pour l’ajout dynamique de membres. Cette directive est | |
| utilisée conjointement avec la directive | |
| <code class="directive">ProxyBeaconListen</code>.</p> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconinterval">Directive <span id="ProxyBeaconInterval">ProxyBeaconInterval</span> <a title="Lien permanent" href="#proxybeaconinterval" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Périodicité de l’envoi d’annonces par le serveur dorsal</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconInterval <em>interval</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyBeaconInterval 5</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconInterval</code> permet de définir | |
| la périodicité à laquelle un serveur dorsal (un serveur | |
| <code class="directive">ProxyBeaconAddress</code>) envoie ses annonces. Elle utilise | |
| la syntaxe de la directive <a href="directive-dict.html#Syntax">time-interval</a> et sa valeur s’exprime | |
| par défaut en secondes ; sa valeur par défaut est 5 secondes.</p> | |
| <p>L’intervalle doit être significativement plus petit que la valeur de la | |
| directive <code class="directive">ProxyBeaconTimeout</code>, de façon qu’une perte | |
| occasionnelle ou qu’une annonce retardée ne provoquent pas l’éviction d’un | |
| serveur dorsal opérationnel.</p> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconlisten">Directive <span id="ProxyBeaconListen">ProxyBeaconListen</span> <a title="Lien permanent" href="#proxybeaconlisten" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adresse sur laquelle le mandataire inverse reçoit les annonces des | |
| serveurs dorsaux</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconListen [<em>address</em>][:<em>port</em>]</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconListen</code> marque un serveur | |
| comme <em>récepteur</em> « phare » (le mandataire inverse). Il lie un socket | |
| UDP à l’adresse spécifiée, par exemple <code>0.0.0.0:5555</code> pour | |
| effectuer la réception sur toutes les interfaces. Un préfixe de protocole | |
| (tel que <code>tcp://</code>) est accepté et ignoré.</p> | |
| <p>L’adresse et le port sont facultatifs et, s’ils sont omis, sont hérités | |
| de l’adresse et du port de ce serveur (ses directives <code class="directive"><a href="../mod/core.html#listen">Listen</a></code> et <code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>). Si aucun argument n’est fourni, | |
| l’écouteur du « phare » lie les propres adresse et port du serveur ; si | |
| seule l’adresse est donnée, le port est hérité, et ainsi de suite. Étant | |
| donné que UDP et TCP sont des espaces de port indépendants, lier le socket | |
| du « phare » au port du serveur n’entre <em>pas</em> en collision avec | |
| l’écouteur TCP du serveur — faisant que le canal du « phare » partage | |
| le point de terminaison du service, qui identifie aussi le mandataire auprès | |
| des serveurs dorsaux avec son adresse réelle (comme l’écouteur effectue ses | |
| liens dans un processus enfant non privilégié, un port privilégié comme 80 | |
| ou 443 ne peut pas être partagé de cette manière ; n’utilisez le port du | |
| serveur que s’il est non privilégié).</p> | |
| <p>Les serveurs dorsaux envoient leurs annonces à l’adresse spécifiée par la | |
| directive <code class="directive">ProxyBeaconAddress</code>. Cette dernière doit | |
| être utilisée conjointement avec la directive | |
| <code class="directive">ProxyBeaconBalancer</code> ; dans le cas contraire, les | |
| annonces sont reçues et journalisées, mais aucun membre n’est ajouté. Les | |
| directives <code class="directive">ProxyBeaconListen</code> et | |
| <code class="directive">ProxyBeaconAddress</code> sont mutuellement exclusives sur | |
| un même serveur.</p> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconmaxskew">Directive <span id="ProxyBeaconMaxSkew">ProxyBeaconMaxSkew</span> <a title="Lien permanent" href="#proxybeaconmaxskew" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Age maximal autorisé d’une annonce signée</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconMaxSkew <em>interval</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconMaxSkew</code> permet de définir | |
| la fenêtre anti-réémission utilisée lorsque la directive | |
| <code class="directive">ProxyBeaconSecret</code> est configurée : le mandataire | |
| rejette toute annonce dont l’horodatage signé diffère du temps actuel d’une | |
| valeur supérieure à celle de la directive | |
| <code class="directive">ProxyBeaconMaxSkew</code>, et cela dans les deux directions. | |
| Cette directive utilise la syntaxe de la directive <a href="directive-dict.html#Syntax">time-interval</a> et sa valeur s’exprime | |
| par défaut en secondes.</p> | |
| <p>Si elle n’est pas définie, sa valeur par défaut est de 30 secondes. Une | |
| fenêtre plus large tolère des écarts d’horloge plus grands entre les hôtes ; | |
| une fenêtre plus petite restreint la tolérance sur la vérification de | |
| fraîcheur. Notez que la vérification de la croissance stricte des | |
| horodatages d’un même serveur (voir la directive | |
| <code class="directive">ProxyBeaconSecret</code>) bloque les réémissions, quelle que | |
| soit la valeur de cette fenêtre. Cette directive est utilisée au niveau du | |
| mandataire.</p> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeaconsecret">Directive <span id="ProxyBeaconSecret">ProxyBeaconSecret</span> <a title="Lien permanent" href="#proxybeaconsecret" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Phrase secrète partagée à l’avance pour authentifier les annonces | |
| des serveurs dorsaux</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconSecret <em>secret</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconSecret</code> permet de définir | |
| une phrase secrète partagée à l’avance au sein de la grappe de serveurs. | |
| Elle doit être définie avec la <em>même</em> valeur sur le mandataire | |
| inverse et sur chaque serveur dorsal. Le serveur dorsal (l’émetteur) signe | |
| chaque annonce avec un message-authentication code (un SipHash MAC) avec | |
| clé, dérivé de la phrase secrète et avec un horodatage ; le mandataire (le | |
| récepteur) recalcule le MAC et vérifie l’horodatage, en rejetant toute | |
| annonce falsifiée, usurpée ou réenvoyée. Les messages réenvoyés sont | |
| interceptés de deux manières : une fenêtre de fraîcheur (directive | |
| <code class="directive">ProxyBeaconMaxSkew</code>) rejette les horodatages anciens, | |
| et une vérification pour chaque serveur dorsal rejette toute annonce dont | |
| l’horodatage n’avance pas strictement ; ainsi, un message capturé et renvoyé | |
| (par exemple pour empêcher l’éviction d’un serveur dorsal éteint) sera | |
| rejeté.</p> | |
| <p>Cette directive est requise sur chaque serveur impliqué dans le canal du | |
| mandataire phare — le mandataire | |
| (<code class="directive">ProxyBeaconListen</code>) et chaque serveur dorsal | |
| (<code class="directive">ProxyBeaconAddress</code>). Si elle est omise sur un de ces | |
| serveurs, le serveur refusera de démarrer ; il n’existe pas de mode non | |
| authentifié.</p> | |
| <p>Toute annonce dont le MAC n’est pas valable et récent sera rejetée. Si | |
| les phrases secrètes du mandataire et d’un serveur dorsal diffèrent, les | |
| annonces de ce dernier seront rejetées silencieusement (et journalisées), ce | |
| qui donne l’impression que le serveur dorsal n’a jamais atteint le | |
| répartiteur de charge.</p> | |
| <p>Étant donné que la phrase secrète est stockée dans le fichier de | |
| configuration, définissez les permissions de ce dernier comme s’il | |
| s’agissait d’une clé privée.</p> | |
| <div class="note"><h3>Synchronisation de l’horloge</h3> | |
| <p>La protection contre la réémission basée sur l’horodatage compare le | |
| moment de l’annonce avec l’horloge du mandataire ; le mandataire et les | |
| serveurs dorsaux doivent donc avoir des horloges correctement synchronisées | |
| (par exemple à l’aide de NTP). Voir la directive | |
| <code class="directive">ProxyBeaconMaxSkew</code>.</p> | |
| </div> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="proxybeacontimeout">Directive <span id="ProxyBeaconTimeout">ProxyBeaconTimeout</span> <a title="Lien permanent" href="#proxybeacontimeout" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Durée maximale de l’absence d’annonce d’un serveur dorsal au bout | |
| de laquelle le mandataire enlève ce dernier de la rotation</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyBeaconTimeout <em>interval</em></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyBeaconTimeout 0</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr> | |
| <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr> | |
| <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_beacon</td></tr> | |
| </table> | |
| <p>La directive <code class="directive">ProxyBeaconTimeout</code> permet de définir | |
| la durée maximale pendant laquelle le mandataire attendra une annonce en | |
| provenance d’un serveur dorsal avant de désactiver ce dernier (en l’enlevant | |
| de la rotation). Si ce serveur dorsal renvoie une annonce par la suite, il | |
| est réactivé. Cette directive utilise | |
| la syntaxe de la directive <a href="directive-dict.html#Syntax">time-interval</a> et sa valeur s’exprime | |
| par défaut en secondes.</p> | |
| <p>La valeur par défaut, <code>0</code>, désactive complètement l’éviction : | |
| les serveurs dorsaux sont ajoutés lorsqu’ils s’annoncent mais ne sont jamais | |
| désactivés automatiquement. Définissez cette directive à un multiple de | |
| (quelques fois) la valeur de la directive | |
| <code class="directive">ProxyBeaconInterval</code> du serveur dorsal pour mettre en | |
| Ĺ“uvre une maintenance autonome des adhésions. Cette directive est définie | |
| sur le mandataire.</p> | |
| </div> | |
| </div> | |
| <div class="bottomlang"> | |
| <p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_beacon.html" hreflang="en" rel="alternate" title="English"> en </a> | | |
| <a href="../fr/mod/mod_proxy_beacon.html" title="Français"> fr </a></p> | |
| </div><div id="footer"> | |
| <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> | |
| <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!-- | |
| if (typeof(prettyPrint) !== 'undefined') { | |
| prettyPrint(); | |
| } | |
| var langToggle = document.querySelector('.lang-toggle'); | |
| var topLang = document.querySelector('.toplang'); | |
| if (langToggle && topLang) { | |
| langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); | |
| } | |
| var qv = document.getElementById('quickview'); | |
| if (qv) { | |
| document.body.appendChild(qv); | |
| var qvBtn = document.createElement('button'); | |
| qvBtn.className = 'qv-toggle'; | |
| qvBtn.setAttribute('aria-label', 'Toggle page navigation'); | |
| qvBtn.innerHTML = '☰'; | |
| document.body.appendChild(qvBtn); | |
| qvBtn.addEventListener('click', function() { | |
| var isOpen = qv.classList.toggle('open'); | |
| if (isOpen) { | |
| qv.style.top = window.scrollY + 10 + 'px'; | |
| } | |
| }); | |
| window.addEventListener('scroll', function() { qv.classList.remove('open'); }); | |
| } | |
| //--><!]]></script> | |
| </body></html> |