--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
+<!-- English Revision : 1673945 -->
+<!-- French translation : Lucien GENTIS -->
+<!-- $LastChangedRevision: 2015050201 $ -->
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<modulesynopsis metafile="mod_policy.xml.meta">
+
+<name>mod_policy</name>
+<description>Mise en conformité avec le protocole HTTP.</description>
+<status>Extension</status>
+<sourcefile>mod_policy.c</sourcefile>
+<identifier>policy_module</identifier>
+
+<summary>
+ <p>Le protocole HTTP recommande aux clients d'être "indulgents pour
+ ce qu'ils doivent accepter", et aux serveurs d'être "stricts pour ce
+ qu'ils envoient". Dans certains cas, il peut s'avérer difficile de
+ déterminer si un serveur ou une application a été mal configuré,
+ sert un contenu qui ne peut pas être mis en cache ou se comporte de
+ manière non optimale, car le client HTTP est souvent en mesure de
+ compenser les défauts du serveur. Ces problèmes peuvent induire une
+ consommation de bande passante excessive, ou même une interruption
+ de service suite à une charge trop importante du serveur.</p>
+
+ <p>Le module <module>mod_policy</module> propose un jeu de filtres
+ qui permettent de tester la conformité du serveur au protocole HTTP.
+ Ces tests permettent à l'administrateur du serveur de journaliser
+ les violations, ou même de rejeter une réponse losque certaines
+ conditions spécifiées se réalisent.</p>
+
+ <p>Il devient ainsi possible de définir des critères de conformité
+ minimale au protocole HTTP pour développer des applications
+ sans problème. En outre, il est possible de configurer un
+ mandataire inverse ou un cache pour qu'il se protège lui-même contre
+ les serveurs d'origine mal configurés ou les contenus indument
+ impossible à être mis en cache, ou un mécanisme qui détecte les
+ erreurs de configuration au sein du serveur lui-même.</p>
+
+</summary>
+<seealso><a href="../filter.html">Les filtres</a></seealso>
+<seealso><a href="../compliance.html">Conformité au protocole HTTP</a></seealso>
+
+<section id="actions">
+ <title>Actions</title>
+
+ <p>Si une règle est violée, il possible d'effectuer les actions
+ suivantes :</p>
+
+ <dl>
+ <dt><strong>ignore</strong></dt>
+ <dd>La vérification de la politique de conformité sera désactivée
+ pour l'espace d'URL spécifié, même si le filtre est présent.</dd>
+
+ <dt><strong>log</strong></dt>
+ <dd>La vérification de la politique de conformité sera exécutée, et
+ si une violation est détectée, un avertissement sera enregistré dans
+ le journal error_log du serveur, et un en-tête <code>Warning</code>
+ ajouté à la réponse en tant qu'information à destination du client.</dd>
+
+ <dt><strong>enforce</strong></dt>
+ <dd>La vérification de la politique de conformité sera exécutée,
+
+ The policy check will be executed, and if a violation is detected
+ an error will be logged to the server error_log, a
+ <code>Warning</code> header added to the response, and a <code>502
+ Bad Gateway</code> will be returned to the client. Optional links to
+ explanatory documentation can be added to each error message,
+ detailing the origin of each policy.</dd>
+
+ </dl>
+
+ <p>Il est aussi possible de désactiver toutes les règles pour un
+ espace d'URL donné, si le besoin s'en fait sentir, via la directive
+ <directive module="mod_policy">PolicyFilter</directive>.</p>
+
+ <p>En outre, la directive <directive
+ module="mod_policy">PolicyEnvironment</directive> permet de
+ spécifier une variable d'environnement qui, si elle est définie, va
+ court-circuiter les règles ou diminuer leur portée.</p>
+
+</section>
+
+<section id="tests">
+ <title>Tests de la politique de filtrage</title>
+
+ <p>Les filtres suivants sont disponibles :</p>
+
+ <dl>
+ <dt><strong><a href="../compliance.html#policytype">POLICY_TYPE</a>
+ </strong>: Impose la validité des types de contenus</dt>
+ <dd>La requête peut être rejetée suite à la présence de types de contenus vides
+ ou syntaxiquement invalides. Les types peuvent aussi être restreints
+ à une liste pouvant contenir des caractères génériques ? et *.</dd>
+
+ <dt><strong><a href="../compliance.html#policylength">POLICY_LENGTH</a>
+ </strong>: Impose la présence de l'en-tête Content-Length</dt>
+ <dd>La longueur des réponses peut être spécifiée de trois manières
+ différentes : en spécifiant à l'avance une longueur explicite, en
+ utilisant un codage de morcellement (chunking) pour définir la
+ longueur, ou en ne spécifiant aucune longueur et en terminant la
+ requête lorsque son traitement est achevé. L'absence de
+ spécification d'une longueur de contenu peut affecter la possibilité
+ de mise en cache de la réponse, et empêcher l'utilisation de la
+ persistance avec les requêtes de type HTTP/1.0. Ce filtre impose la
+ présence d'une longueur de contenu explicite dans la réponse.</dd>
+
+ <dt><strong><a href="../compliance.html#policykeepalive">POLICY_KEEPALIVE
+ </a></strong>: Impose l'option de persistance</dt>
+ <dd>Moins restrictif que le filtre POLICY_LENGTH, ce filtre impose
+ la possibilité de persistance de la réponse. Si la réponse n'a pas
+ de longueur définie à 0 par le protocole, si elle n'est pas une
+ erreur, et si elle ne contient pas d'en-tête Content-Length ou si
+ elle est de type HTTP/1.1 et ne contient pas l'en-tête
+ Content-Encoding: chunked, alors elle sera rejetée.</dd>
+
+ <dt><strong><a href="../compliance.html#policyvary">POLICY_VARY</a>
+ </strong>: Interdit la présence de certains en-têtes au sein des
+ en-têtes Vary</dt>
+ <dd>Si l'en-tête Vary contient un des en-têtes spécifiés, ce filtre
+ va rejeter la requête. Un cas typique est la présence de l'en-tête
+ User-Agent dans l'en-tête Vary, ce qui peut être à l'origine d'une
+ condition de déni de service au niveau du cache.</dd>
+
+ <dt><strong><a href="../compliance.html#policyvalidation">
+ POLICY_VALIDATION</a></strong>: Impose la présence d'un en-tête Etag
+ et/ou Last-Modified</dt>
+ <dd>La possibilité pour un cache de déterminer si une entité qu'il
+ contient peut être rafraîchie dépend de la présence d'un en-tête
+ Etag et/ou Last-Modified pour vérifier si elle est valide. La requête sera
+ rejetée en cas d'absence de ces deux en-têtes, ou d'une syntaxe
+ invalide d'un de ces deux en-têtes.</dd>
+
+ <dt><strong><a href="../compliance.html#policyconditional">
+ POLICY_CONDITIONAL</a></strong>: Impose un traitement conforme des
+ en-têtes conditionnels</dt>
+ <dd>Lorsqu'une requête contient des en-têtes conditonnels, un
+ serveur doit répondre dans certaines conditions avec un code
+ <code>304 Not Modified</code> ou <code>412 Precondition
+ Failed</code>. Il arrive q'un serveur ignore les en-têtes
+ conditionnels, et cela diminue l'efficacité du mécanisme de mise en
+ cache HTTP. Ce filtre rejète les requêtes lorsqu'un en-tête
+ conditionnel était présent, et une réponse 2xx a été renvoyée au
+ lieu de la réponse 304 ou 412 attendue.</dd>
+
+ <dt><strong><a href="../compliance.html#policynocache">POLICY_NOCACHE</a>
+ </strong>: Impose la possibilité de mise en cache des réponses</dt>
+ <dd>Lorsqu'une requête se déclare elle-même impossible à mettre en
+ cache, elle est rejetée. C'est le cas si elle contient l'un des
+ en-têtes suivants :
+ <ul><li><code>Cache-Control: no-cache</code></li>
+ <li><code>Pragma: no-cache</code></li>
+ <li><code>Cache-Control: no-store</code></li>
+ <li><code>Cache-Control: private</code></li>
+ </ul></dd>
+
+ <dt><strong><a href="../compliance.html#policymaxage">POLICY_MAXAGE</a>
+ </strong>: Impose une durée de vie minimale</dt>
+ <dd>Lorsqu'une réponse possède une durée de vie inférieure à la
+ valeur spécifiée, ou si cette durée de vie est heuristique, la
+ requête est rejetée. La chronologie de la vérification d'une réponse
+ est la suivante :
+ <ul><li>Si <code>s-maxage</code> est présent mais d'une valeur trop
+ faible; ou</li>
+ <li>Si <code>max-age</code> est présent mais d'une valeur trop
+ faible; ou</li>
+ <li>Si <code>Expires</code> est présent et invalide; ou</li>
+ <li><code>Date</code> est présent et invalide; ou</li>
+ <li><code>Expires</code> moins Date est trop faible ; ou</li>
+ <li>Aucun en-tête <code>s-maxage</code>, <code>maxage</code>, ou
+ <code>Expires</code>/<code>Date</code> n'est présent</li>
+ </ul></dd>
+
+ <dt><strong><a href="../compliance.html#policyversion">POLICY_VERSION</a>
+ </strong>: Impose une version HTTP minimale dans la requête</dt>
+ <dd>Lorsqu'une requête possède un numéro de version HTTP inférieur
+ au numéro de version minimum requis, la requête est rejetée. Les
+ numéros de version suivants sont reconnus :
+ <ul><li><code>HTTP/1.1</code></li>
+ <li><code>HTTP/1.0</code></li>
+ <li><code>HTTP/0.9</code></li>
+ </ul></dd>
+
+ </dl>
+
+</section>
+
+<section id="example">
+ <title>Exemple de configuration</title>
+
+ <p>Voici un exemple de configuration qui protège un serveur qui
+ délivre du contenu statique :</p>
+
+ <highlight language="config">
+<Location "/">
+ SetOutputFilter POLICY_TYPE;POLICY_LENGTH;POLICY_KEEPALIVE;POLICY_VARY;POLICY_VALIDATION; \
+ POLICY_CONDITIONAL;POLICY_NOCACHE;POLICY_MAXAGE;POLICY_VERSION
+
+ # le contenu peut être quelconque, mais l'en-tête Content-Type doit être
+ # présent et valide
+ PolicyType enforce */*
+
+ # rejet si aucune longueur de contenu déclarée
+ PolicyLength enforce
+
+ # pris en charge par le filtre policy length
+ PolicyKeepalive ignore
+
+ # rejet si l'en-tête User-Agent aparaît dans les en-têtes Vary
+ PolicyVary enforce User-Agent
+
+ # la validation est imposée
+ PolicyValidation enforce
+
+ # les réponses conditionnelles non conformes sont rejetées
+ PolicyConditional enforce
+
+ # les réponses impossibles à mettre en cache sont rejetées
+ PolicyNocache enforce
+
+ # la durée de vie doit être au moins d'un jour
+ PolicyMaxage enforce 86400
+
+ # le numéro de version de la requête peut être quelconque
+ PolicyVersion ignore HTTP/1.1
+</Location>
+
+# désactivation du filtrage pour le répertoire /server-status
+<Location "/server-status">
+ PolicyFilter off
+</Location>
+ </highlight>
+
+</section>
+
+<directivesynopsis>
+
+<name>PolicyFilter</name>
+<description>Active ou désactive le filtrage pour un espace d'URL donné.</description>
+<syntax>PolicyFilter <var>on|off</var></syntax>
+<default>on</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Commutateur principal qui permet d'activer ou de désactiver le
+ filtrage pour un espace d'URL donné.</p>
+
+ <example><title>Example</title>
+ <highlight language="config">
+# activé par défaut
+<Location "/">
+ PolicyFilter on
+</Location>
+
+# désactivation du filtrage pour le répertoire /server-status
+<Location "/server-status">
+ PolicyFilter off
+</Location>
+</highlight>
+</example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyEnvironment</name>
+<description>Modification des règles de filtrage en fonction d'une
+variable d'environnement.</description>
+<syntax>PolicyEnvironment <var>variable</var> <var>log-value</var> <var>ignore-value</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Limite l'action des règles à la journalisation ou les désactive
+ totalement en fonction de la présence d'une variable d'environnement. Si
+ la variable spécifiée est présente et égale à la valeur de
+ l'argument log-value, les erreurs rencontrées par les filtres ne
+ seront que journalisées. Si la variable spécifiée est présente et
+ égale à la valeur de l'argument ignore-value, toutes les règles
+ seront ignorées.</p>
+
+ <example><title>Example</title>
+ <highlight language="config">
+# limitation de l'action des règles si la variable POLICY_CONTROL
+# est présente
+PolicyEnvironment POLICY_CONTROL log ignore
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyConditional</name>
+<description>Active le filtrage des requêtes conditionnelles.</description>
+<syntax>PolicyConditional <var>ignore|log|enforce</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse qui aurait du être
+ conditionnelle mais ne l'est pas sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# les réponses conditionnelles non conformes doivent être rejetées
+PolicyConditional enforce
+ </highlight>
+ </example>
+
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyConditionalURL</name>
+<description>URL contenant la description de la politique de filtrage
+des requêtes conditionnelles.</description>
+<syntax>PolicyConditionalURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL de la documentation
+ décrivant la politique de filtrage des requêtes conditionnelles ;
+ elle apparaîtra dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyLength</name>
+<description>Active le filtrage de la spécification de la longueur du
+contenu.</description>
+<syntax>PolicyLength <var>ignore|log|enforce</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse qui ne contient pas
+ d'en-tête <code>Content-Length</code> sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet suite à l'absence de l'en-tête Content-Length
+PolicyLength enforce
+ </highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyLengthURL</name>
+<description>URL contenant la description de la politique de filtrage de
+la spécification de la longueur du contenu.</description>
+<syntax>PolicyLengthURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ documentation décrivant la politique de filtrage de la spécification
+ de la longueur du contenu ; elle apparaîtra dans les messages
+ d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyKeepalive</name>
+<description>Active la politique de persistance.</description>
+<syntax>PolicyKeepalive <var>ignore|log|enforce</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse qui ne contient ni en-tête
+ <code>Content-Length</code>, ni en-tête
+ <code>Transfer-Encoding</code> de valeur <code>chunked</code> sera
+ rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet suite a absence d'en-tête Content-Length ou Transfer-Encoding
+PolicyKeepalive enforce
+</highlight>
+ </example>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyKeepaliveURL</name>
+<description>URL contenant la description de la politique de persistance.</description>
+<syntax>PolicyKeepaliveURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique de persistance ; elle apparaîtra dans
+ les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyType</name>
+<description>Active la politique des types de contenus.</description>
+<syntax>PolicyType <var>ignore|log|enforce</var> <var>type</var> [ <var>type</var> [ ... ]]</syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse qui ne contient pas
+ d'en-tête <code>Content-Type</code>, ou dont l'en-tête
+ <code>Content-Type</code> est mal formé, ou dont l'en-tête
+ <code>Content-Type</code> contient une valeur qui ne correspond pas
+ au(x) modèle(s) spécifié(s) sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# impose le type de contenu json ou XML
+PolicyType enforce application/json text/xml
+ </highlight>
+ </example>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet suite à type de contenu mal formé
+PolicyType enforce */*
+ </highlight>
+ </example>
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyTypeURL</name>
+<description>URL contenant la description de la politique des types de
+contenu.</description>
+<syntax>PolicyTypeURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique des types de contenu ; elle apparaîtra
+ dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyVary</name>
+<description>Active la politique de filtrage de l'en-tête Vary.</description>
+<syntax>PolicyVary <var>ignore|log|enforce</var> <var>header</var> [ <var>header</var> [ ... ]]</syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse dont l'en-tête
+ <code>Vary</code> contient un des en-têtes spécifiés sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet suite à la présence de l'en-tête "User-Agent" dans l'en-tête
+# Vary
+PolicyVary enforce User-Agent
+ </highlight>
+ </example>
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyVaryURL</name>
+<description>URL contenant la description de la politique de filtrage de
+l'en-tête Vary.</description>
+<syntax>PolicyVaryURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique de filtrage de l'en-tête Vary ; elle
+ apparaîtra dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyValidation</name>
+<description>Active le filtrage de la validation du contenu.</description>
+<syntax>PolicyValidation <var>ignore|log|enforce</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse qui ne contient ni en-tête
+ <code>ETag</code> valide, ni en-tête <code>Last-Modified</code>, ou
+ dont la syntaxe d'un de ces deux en-têtes est incorrecte sera
+ rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet suite à l'absence des en-têtes Etag et/ou Last-Modified
+PolicyValidation enforce
+ </highlight>
+ </example>
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyValidationURL</name>
+<description>URL contenant la description de la politique de filtrage de
+la validation du contenu.</description>
+<syntax>PolicyValidationURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique de filtrage de la validation du contenu
+ ; elle apparaîtra dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyNocache</name>
+<description>Active le filtrage des réponses qui se définissent
+elles-mêmes comme impossibles à mettre en cache.</description>
+<syntax>PolicyNocache <var>ignore|log|enforce</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse qui se définit elle-même
+ comme impossible à mettre en cache via l'en-tête
+ <code>Cache-Control</code> ou <code>Pragma</code> sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# une réponse contenant l'en-tête Cache-Control: no-cache sera
+# rejetée
+PolicyNocache enforce
+ </highlight>
+ </example>
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyNocacheURL</name>
+<description>URL contenant la description de la politique de filtrage
+des réponses qui se définissent elles-mêmes comme impossibles à mettre
+en cache.</description>
+<syntax>PolicyNocacheURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique de filtrage des réponses qui se
+ définissent elles-mêmes comme impossibles à mettre en cache ; elle
+ apparaîtra dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyMaxage</name>
+<description>Active le filtrage de la durée de vie des réponses.</description>
+<syntax>PolicyMaxage <var>ignore|log|enforce</var> <var>age</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une réponse dont la durée de vie n'est
+ pas explicitement spécifiée via un en-tête <code>max-age</code>,
+ <code>s-maxage</code> ou <code>Expires</code>, ou dont la durée de
+ vie est inférieure à la valeur donnée sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet des réponses dont la durée de vie est inférieure à une
+# journée
+PolicyMaxage enforce 86400
+ </highlight>
+ </example>
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyMaxageURL</name>
+<description>URL contenant la description de la politique de filtrage
+des réponses en fonction de leur durée de vie.</description>
+<syntax>PolicyMaxageURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique de filtrage des réponses en fonction de
+ leur durée de vie ; elle apparaîtra dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyVersion</name>
+<description>Active le filtrage des requêtes en fonction du numéro de
+version HTTP.</description>
+<syntax>PolicyVersion <var>ignore|log|enforce</var> <var>HTTP/0.9|HTTP/1.0|HTTP/1.1</var></syntax>
+<default>ignore</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Avec l'argument enforce, une requête dont le numéro de version
+ HTTP est inférieur à la valeur spécifiée sera rejetée.</p>
+
+ <example><title>Exemple</title>
+ <highlight language="config">
+# rejet des requêtes dont le numéro de version HTTP est inférieur à
+# HTTP/1.1
+PolicyVersion enforce HTTP/1.1
+ </highlight>
+ </example>
+
+</usage>
+
+</directivesynopsis>
+
+<directivesynopsis>
+
+<name>PolicyVersionURL</name>
+<description>URL contenant la description de la politique de filtrage
+des requêtes en fonction du numéro de version HTTP.</description>
+<syntax>PolicyVersionURL <var>url</var></syntax>
+<default>none</default>
+<contextlist><context>server config</context><context>virtual host</context>
+<context>directory</context></contextlist>
+<compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache.</compatibility>
+
+<usage>
+ <p>Cette directive permet de spécifier l'URL contenant la
+ description de la politique de filtrage des requêtes en fonction du
+ numéro de version HTTP ; elle apparaîtra dans les messages d'erreur.</p>
+</usage>
+
+</directivesynopsis>
+
+</modulesynopsis>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
+<!-- English Revision: 1817908 -->
+<!-- French translation : Lucien GENTIS -->
+<!-- $LastChangedRevision: 2017062501 $ -->
+
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<modulesynopsis metafile="mod_proxy_hcheck.xml.meta">
+
+<name>mod_proxy_hcheck</name>
+<description>Check up dynamique des membres du groupe de répartition de charge
+(équipiers) pour <module>mod_proxy</module></description>
+<status>Extension</status>
+<sourcefile>mod_proxy_hcheck.c</sourcefile>
+<identifier>proxy_hcheck_module</identifier>
+<compatibility>Disponible à partir de la version 2.4.21 du serveur HTTP Apache</compatibility>
+
+<summary>
+ <p>Ce module permet d'effectuer un check up dynamique des membres du groupe
+ de répartition de charge (équipiers). Ce check up peut être activé pour un
+ ou plusieurs équipiers et il est indépendant des requêtes de mandataire
+ inverse proprement dites.</p>
+
+ <p>Pour fonctionner, ce module <em>nécessite</em> le chargement préalable de
+ <module>mod_watchdog</module>.</p>
+
+<note><title>Paramètres</title>
+ <p>Le mécanisme de check up est activé via l'utilisation de paramètres
+ supplémentaires de BalancerMember configurés de manière standard via la
+ directive <directive module="mod_proxy">ProxyPass</directive> :</p>
+
+ <p>Ce module définit un nouveau drapeau d'état pour BalancerMember :
+ "<code>C</code>". Lorsque l'équipier est mis hors service suite à un
+ disfonctionnement déterminé par le module de check up, ce drapeau est activé
+ et peut être lu (et modifié) via le <code>balancer-manager</code>.</p>
+
+ <table>
+ <tr><th>Paramètre</th>
+ <th>Défaut</th>
+ <th>Description</th></tr>
+ <tr><td>hcmethod</td>
+ <td>None</td>
+ <td>Aucun check up dynamique n'est effectué. Les choix possibles sont :
+ <table>
+ <tr><th>Method</th><th>Description</th><th>Note</th></tr>
+ <tr><td>None</td><td>Aucun check up dynamique effectué</td><td></td></tr>
+ <tr><td>TCP</td><td>Vérifie qu'un socket vers le serveur
+ d'arrière-plan peut être créé ; par exemple "es-tu en
+ état de fonctionner"</td><td></td></tr>
+ <tr><td>OPTIONS</td><td>Envoie une requête <code>HTTP
+ OPTIONS</code> au serveur d'arrière-plan</td><td>*</td></tr>
+ <tr><td>HEAD</td><td>Envoie une requête <code>HTTP
+ HEAD</code> au serveur d'arrière-plan</td><td>*</td></tr>
+ <tr><td>GET</td><td>Envoie une requête <code>HTTP
+ GET</code> au serveur d'arrière-plan</td><td>*</td></tr>
+<!--
+ <tr><td>CPING</td><td><strong>AJP only</strong> Do <code>CPING/CPONG</code> check</td><td></td></tr>
+ <tr><td>PROVIDER</td><td>Name of <code>provider</code> to be used to check health</td><td></td></tr>
+-->
+ <tr><td colspan="3"></td></tr>
+ <tr><td colspan="3">*: si hcexpr n'est pas
+ utilisé, un retour HTTP 2xx ou 3xx sera
+ interprété comme un passage avec succès du check
+ up.</td></tr>
+ </table>
+ </td></tr>
+ <tr><td>hcpasses</td>
+ <td>1</td>
+ <td>Nombre de check up à passer avec succès avant de remettre en service
+ l'équipier</td></tr>
+ <tr><td>hcfails</td>
+ <td>1</td>
+ <td>Nombre de check up échoués avant mettre hors service l'équipier</td></tr>
+ <tr><td>hcinterval</td>
+ <td>30</td>
+ <td>Intervalle entre deux check up en secondes (par défaut effectué
+ toutes les 30 secondes). Utilise la syntaxe <a
+ href="directive-dict.html#Syntax">time-interval</a>.</td></tr>
+ <tr><td>hcuri</td>
+ <td> </td>
+ <td>URI supplémentaire à ajouter à l'URL de l'équipier pour le check up.</td></tr>
+ <tr><td>hctemplate</td>
+ <td> </td>
+ <td>Nom du modèle créé via <directive>ProxyHCTemplate</directive> à
+ utiliser pour définir les paramètres de check up de cet équipier</td></tr>
+ <tr><td>hcexpr</td>
+ <td> </td>
+ <td>Nom de l'expression créée via <directive>ProxyHCExpr</directive>
+ utilisée pour analyser les en-têtes de la réponse du check up.<br/>
+ <em>Si ce paramètre est absent, un état HTTP de 2xx à 3xx est
+ interprété comme un check up réussi.</em></td></tr>
+ </table>
+</note>
+
+</summary>
+<seealso><module>mod_proxy</module></seealso>
+
+<section id="examples">
+
+ <title>Exemples d'utilisation</title>
+ <p>L'exemple suivant montre comment configurer le check up pour différents
+ serveurs d'arrière-plan :</p>
+
+ <!-- This section should probably be extended with more, useful examples -->
+ <highlight language="config">
+ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
+ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
+ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
+
+<Proxy balancer://foo>
+ BalancerMember http://www.example.com/ hcmethod=GET hcexpr=in_maint hcuri=/status.php
+ BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
+ BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
+ BalancerMember http://www4.example.com/
+</Proxy>
+
+ProxyPass "/" "balancer://foo"
+ProxyPassReverse "/" "balancer://foo"
+</highlight>
+
+<p>Dans ce scénario, on teste l'équipier <code>http://www.example.com/</code> en lui
+envoyant une requête <code>GET /status.php</code> et en regardant si la réponse
+contient la chaîne <em>Under maintenance</em>. Si c'est le cas, le check up est
+considéré comme ayant échoué et l'équipier est mis hors service. Ce check up
+dynamique est effectué toutes les 30 secondes, ce qui correspond à la valeur par
+défaut.</p>
+
+<p>On teste l'équipier <code>http://www2.example.com/</code> en lui envoyant
+simplement une requête <code>HEAD</code> toutes les 10 secondes et en vérifiant
+que la réponse HTTP est bien un code d'état de 2xx, 3xx ou 4xx. On teste
+l'équipier <code>http://www3.example.com/</code> en vérifiant simplement toutes
+les 5 secondes que le socket vers ce serveur est bien opérationnel. Si ce
+serveur est marqué "hors service", il lui faudra 2 check up réussis pour être
+réactivé et participer à nouveau à la répartition de charge. Si à ce moment-là
+il échoue à 3 check up successifs, il sera à nouveau mis hors service. Enfin,
+l'équipier <code>http://www4.example.com/</code> ne fait l'objet d'aucun check
+up.</p>
+
+</section>
+
+<directivesynopsis>
+<name>ProxyHCExpr</name>
+<description>Crée et nomme une expression conditionnelle à utiliser pour
+déterminer la santé d'un serveur d'arrière-plan en fonction de sa valeur.</description>
+<syntax>ProxyHCExpr name {ap_expr expression}</syntax>
+<contextlist><context>server config</context><context>virtual host</context>
+</contextlist>
+<override>FileInfo</override>
+
+<usage>
+ <p>La directive <directive>ProxyHCExpr</directive> permet de créer et nommer
+ une expression conditionnelle dont la valeur calculée en fonction des
+ en-têtes de la réponse du serveur d'arrière-plan permettra d'évaluer la
+ santé de ce dernier. Cette expression nommée peut alors être assignée aux
+ serveurs d'arrière-plan via le paramètre <code>hcexpr</code>.</p>
+
+ <example><title>ProxyHCExpr: interprète les réponses 2xx/3xx/4xx comme des
+ check up réussis</title>
+ <highlight language="config">
+ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
+ProxyPass "/apps" "balancer://foo"
+
+<Proxy balancer://foo>
+ BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
+</Proxy>
+ </highlight>
+ </example>
+
+ <note>
+ L'<a href="../expr.html">expression</a> peut utiliser des accolades ("{}")
+ comme délimiteurs en plus des guillemets normaux.
+ </note>
+
+ <p>Si l'on utilise une méthode de check up (par exemple <code>GET</code>)
+ qui génère un corps de réponse, ce corps peut lui-même être ausculté via
+ <code>ap_expr</code> en utilisant la fonction associée aux expressions
+ <code>hc()</code> spécifique à ce module.</p>
+
+ <p>Dans l'exemple suivant, on envoie une requête <code>GET</code> au serveur
+ d'arrière-plan, et si le corps de la réponse contient la chaîne <em>Under
+ maintenance</em>, ce serveur d'arrière-plan est mis hors service.</p>
+
+ <example><title>ProxyHCExpr: auscultation du corps de la réponse</title>
+ <highlight language="config">
+ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
+ProxyPass "/apps" "balancer://foo"
+
+<Proxy balancer://foo>
+ BalancerMember http://www.example.com/ hcexpr=in_maint hcmethod=get hcuri=/status.php
+</Proxy>
+ </highlight>
+ </example>
+
+ <p><em>NOTE:</em> Comme le corps de la réponse peut être assez grand, il est
+ recommandé de privilégier un check up basé sur les codes d'état.</p>
+</usage>
+</directivesynopsis>
+
+
+<directivesynopsis>
+<name>ProxyHCTemplate</name>
+<description>Crée et nomme un modèle permettant de définir différents
+paramètres de check up</description>
+<syntax>ProxyHCTemplate name parameter=setting <...></syntax>
+<contextlist><context>server config</context><context>virtual host</context>
+</contextlist>
+<override>FileInfo</override>
+
+<usage>
+ <p>La directive <directive>ProxyHCTemplate</directive> permet de créer et
+ nommer un modèle de paramètres de check up qui peut alors être assigné aux
+ équipiers via le paramètre <code>hctemplate</code></p>
+
+ <example><title>ProxyHCTemplate</title>
+ <highlight language="config">
+ProxyHCTemplate tcp5 hcmethod=tcp hcinterval=5
+ProxyPass "/apps" "balancer://foo"
+
+<Proxy balancer://foo>
+ BalancerMember http://www2.example.com/ hctemplate=tcp5
+</Proxy>
+ </highlight>
+ </example>
+
+</usage>
+</directivesynopsis>
+
+<directivesynopsis>
+<name>ProxyHCTPsize</name>
+<description>Définit la taille totale, pour l'ensemble du
+serveur, du jeu de threads utilisé pour le check up des
+équipiers.</description>
+<syntax>ProxyHCTPsize <size></syntax>
+<contextlist><context>server config</context>
+</contextlist>
+
+<usage>
+ <p>Si Apache httpd et APR ont été compilés avec le support des threads, le
+ module de check up peut confier ce travail à un jeu de threads associé au
+ processus Watchdog, ce qui permet l'exécution des check up en parallèle. La
+ directive <directive>ProxyHCTPsize</directive> permet de déterminer la
+ taille de ce jeu de threads. Une valeur de <code>0</code> signifie qu'aucun
+ jeu de threads ne sera utilisé, et le check up des différents équipiers sera
+ alors effectué séquentiellement. La taille par défaut du jeu de threads est
+ de 16.</p>
+
+ <example><title>ProxyHCTPsize</title>
+ <highlight language="config">
+ProxyHCTPsize 32
+ </highlight>
+ </example>
+
+</usage>
+</directivesynopsis>
+
+</modulesynopsis>