<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1887638:1933688 (outdated) -->
+<!-- English Revision: 1933688 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviwed by : Vincent Deffontaines -->
href="../mod/mod_authz_core.html#logic">Conteneurs
d'autorisations</a> pour un exemple de la manière de les
utiliser pour exprimer des logiques d'autorisation
- complexes.</p>
+ complexes. Chaque fournisseur d’autorisation renvoie un des trois
+ résultats possibles ; voir <a
+ href="../mod/mod_authz_core.html#authzresults">États des résultats
+ d’autorisation</a> pour des détails sur la manière dont les conteneurs
+ interprètent ces résultats.</p>
<p>Par défaut, toutes les directives <directive
module="mod_authz_core">Require</directive> sont
<section id="filesystem"><title>Compatibilité ascendante du contrôle
d'accès</title>
<p>L'adoption d'un mécanisme à base de fournisseurs pour
- l'authentification, a pour effet colatéral de rendre inutiles
+ l'autorisation, a pour effet colatéral de rendre inutiles
les directives <directive
module="mod_access_compat">Order</directive>, <directive
module="mod_access_compat">Allow</directive>, <directive
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1933085:1933507 (outdated) -->
+<!-- English Revision: 1933507 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<p>CGI (Common Gateway Interface) définit une méthode d'interaction
entre un serveur web et des programmes générateurs de contenu
- externes, plus souvent appelés programmes CGI ou scripts CGI.
- Il s'agit d'une méthode simple pour ajouter du contenu dynamique à votre site
+ externes, plus souvent appelés programmes CGI ou scripts CGI. Il
+ s'agit d'une méthode simple pour ajouter du contenu dynamique à votre site
web en utilisant votre langage de programmation préféré.
Ce document est une introduction à la configuration de CGI sur votre
- serveur web httpd, et une initiation à l'écriture de programmes
+ serveur web HTTP Apache, et une initiation à l'écriture de programmes
CGI.</p>
</section>
Sous Windows, ou si l'on utilise un module MPM non-threadé comme prefork,
une directive correctement configurée sera du style :
- <highlight language="config">
+ <highlight language="config">
LoadModule cgi_module modules/mod_cgi.so
</highlight></note>
d'environnement</a> non standards, vous devrez vous assurez que
ces variables lui sont bien transmises par httpd.</p>
- <p>Lorsque des en-têtes HTTP ne sont pas transmis à
- l'environnement, assurez-vous qu'ils sont bien formatés selon la
- <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>, section
- 4.2 : les noms d'en-têtes doivent commencer par une lettre,
- elle-même suivie de lettres, chiffres ou traits d'union. Tout
- en-tête dont le nom viole cette règle sera ignoré.</p>
+ <p>Lorsque des en-têtes HTTP ne sont pas transmis à l'environnement,
+ assurez-vous qu'ils sont bien formatés selon la <rfc>2616</rfc>, section
+ 4.2 : les noms d'en-têtes doivent commencer par une lettre, elle-même
+ suivie de lettres, chiffres ou traits d'union. Tout en-tête dont le nom
+ viole cette règle sera ignoré.</p>
</section>
<p>Pour savoir si vous pouvez utiliser suexec, tapez la commande
<code>apachectl -V</code>, et regardez le chemin indiqué par
- <code>SUEXEC_BIN</code>. Si au démarrage de httpd, ce dernier
+ <code>SUEXEC_BIN</code>. Si au démarrage d'httpd, ce dernier
trouve un exécutable <program>suexec</program> dans ce chemin,
suexec sera activé.</p>
serveur (httpd, IIS, WebSite), le nom du programme CGI en cours
d'exécution, etc...</p>
- <p>Ces variables sont à la disposition du programmeur CGI, et
- elles constituent 50% de la communication client-serveur. La liste
- complète des variables requises se trouve à
- <a href="http://www.ietf.org/rfc/rfc3875">Common Gateway
- Interface RFC</a>.</p>
+ <p>Ces variables sont à la disposition du programmeur CGI, et elles
+ constituent 50% de la communication client-serveur. La liste complète des
+ variables requises se trouve dans la <rfc>3875</rfc> (Common Gateway
+ Interface).</p>
<p>Ce programme CGI basique en Perl permet d'afficher toutes les
variables d'environnement qui sont échangées. Deux programmes
la majorité des programmes.</p>
<p>Si vous écrivez des programmes CGI en C, vous disposez de nombreuses
- options. L'une d'elles est la bibliothèque <code>CGIC</code> de <a
+ options. L'une d'elles est la bibliothèque <code>CGIC</code> de <a
href="https://web.mit.edu/wwwdev/www/cgic.html"
>https://web.mit.edu/wwwdev/www/cgic.html</a>.</p>
</section>
<section id="moreinfo">
<title>Pour plus d'informations</title>
- <p>La spécification CGI actuelle est disponible dans la <a
- href="http://www.ietf.org/rfc/rfc3875">Common Gateway
- Interface RFC</a>.</p>
+ <p>La spécification CGI actuelle est disponible dans la <rfc>3875</rfc>
+ (Common Gateway Interface).</p>
<p>Lorsque vous postez une question à propos d'un problème CGI que
vous rencontrez, que ce soit dans une liste de diffusion ou dans un
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1899235:1933861 (outdated) -->
+<!-- English Revision: 1933861 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
requêtes, des réponses et des en-têtes. Par conséquent, si vous connaissez
HTTP/1, vous connaissez déjà 95% de HTTP/2.</p>
<p>Beaucoup a déjà été écrit à propos de HTTP/2 et de son fonctionnement. La
- documentation la plus officielle est bien entendu sa <a
- href="https://tools.ietf.org/html/rfc7540">RFC 7540</a> (ou <a
- href="http://httpwg.org/specs/rfc7540.html">cette version au format plus
- lisible</a>). Vous trouverez ici une description des rouages de HTTP/2 dans
+ documentation la plus officielle est bien entendu sa <rfc>7540</rfc> (ou cette version au format plus
+ lisible : YMMV (<rfc>7540</rfc>). Vous trouverez ici une description des rouages de HTTP/2 dans
leurs moindres détails.</p>
<p>Le premier document à lire lorsqu'on ne connaît pas un mécanisme n'est
cependant pas sa RFC. Il est préférable de comprendre tout d'abord <em>ce
<li>Une <strong>frame</strong> ou trame est la plus petite unité de
communication au sein d'une connexion HTTP/2 et comporte une en-tête et
une séquence d'octets de longueur variable dont la structure correspond
- au type de trame. Voir la <a
- href="http://httpwg.org/specs/rfc7540.html#FramingLayer">section
- correspondante</a> de la documentation officielle pour plus de
- détails.</li>
- <li>Un <strong>stream</strong> est un flux bidirectionnel de frames au
- sein d'une connexion HTTP/2. La notion correspondante dans HTTP/1 est un
- échange de messages de type requête et réponse. Voir la <a
- href="http://httpwg.org/specs/rfc7540.html#StreamsLayer">section
- correspondante</a> de la documentation officielle pour plus de détails.</li>
+ au type de trame. Voir la section correspondante de la documentation
+ officielle pour plus de détails (<rfc>7540</rfc>).</li> <li>Un
+ <strong>stream</strong> est un flux bidirectionnel de frames au sein
+ d'une connexion HTTP/2. La notion correspondante dans HTTP/1 est un
+ échange de messages de type requête et réponse. Voir la section
+ correspondante de la documentation officielle pour plus de détails
+ (<rfc>7540</rfc>).</li>
<li>HTTP/2 peut gérer <strong>plusieurs streams</strong> de données sur
la même connexion TCP, ce qui permet d'éviter le point de blocage
classique de HTTP/1 pour les requêtes lentes, et de ne pas avoir à
lorsqu'on configure httpd pour HTTP/2 pour la première fois ; donc gardez la
à l'esprit si vous voulez éviter de longues sessions de débogage ! Si vous
voulez être sûr de définir une chaîne d'algorithmes de chiffrement
- appropriée, évitez ceux qui sont listés dans la <a
- href="http://httpwg.org/specs/rfc7540.html#BadCipherSuites"> </a>liste des
- algorithmes de chiffrement TLS HTTP/2 à proscrire.</p>
+ appropriée, évitez ceux qui sont listés dans la liste des
+ algorithmes de chiffrement TLS HTTP/2 à proscrire (<rfc>7540</rfc>).</p>
</note>
<p>L'ordre des protocoles indiqués est aussi important. Par défaut, le
premier sera le protocole préféré. Lorsqu'un client offre plusieurs choix,
d'informer le serveur des ressources qu'il possède déjà dans son cache afin
d'éviter les PUSHes pour ces dernières, mais ceci n'en est actuellement qu'à
un stade très expérimental.</p>
- <p>L'<a href="https://tools.ietf.org/html/draft-ruellan-http-accept-push-policy-00">
+ <p>L'<a href="https://datatracker.ietf.org/doc/html/draft-ruellan-http-accept-push-policy-00">
en-tête Accept-Push-Policy</a> est un autre dispositif expérimental
implémenté dans <module>mod_http2</module> ; il permet au client de définir pour
chaque requête quels genres de PUSHes il accepte.</p>
<p>A l'instar des ressources PUSHées, une autre méthode consiste à envoyer
des en-têtes <code>Link</code> au client avant même que la réponse ne soit
prête. Cette méthode utilise la fonctionnalité appelée "Suggestions
- précoces" (Early Hints) décrite dans la <a
- href="https://tools.ietf.org/html/rfc8297">RFC 8297</a>.</p>
+ précoces" (Early Hints) décrite dans la <rfc>8297</rfc>.</p>
<p>Pour utiliser cette fonctionnalité, vous devez l'activer explicitement
sur le serveur via :</p>
<highlight language="config">
<?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: 1918408:1933537 (outdated) -->
+<!-- English Revision: 1933537 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<directive module="mod_remoteip">RemoteIPHeader</directive>.</p>
<p>Ce module implémente aussi la partie serveur du <a
- href="http://blog.haproxy.com/haproxy/proxy-protocol/">protocole PROXY</a>
- de HAProxy via la directive <directive
+ href="https://www.haproxy.org/download/3.1/doc/proxy-protocol.txt">protocole
+ PROXY</a> de HAProxy via la directive <directive
module="mod_remoteip">RemoteIPProxyProtocol</directive>.</p>
<p>Une fois sa valeur modifiée comme indiqué, cette adresse IP client est
les chaînes de formatage <code>%a</code> des modules
<module>mod_log_config</module> et <module>core</module>. L'adresse IP
client sous-jacente de la connexion est enregistrée via la chaîne de
- formatage <code>%{c}a</code>. </p>
+ formatage <code>%{c}a</code> et via la variable
+ <code>CONN_REMOTE_ADDR</code> dans les <a
+ href="../expr.html">expressions</a>.</p>
<note type="warning">Il est essentiel de n'activer cette
fonctionnalité que pour les requêtes en provenance des serveurs
<seealso><module>mod_authz_host</module></seealso>
<seealso><module>mod_status</module></seealso>
<seealso><module>mod_log_config</module></seealso>
-<seealso><a
-href="http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt">Proxy Protocol
+<seealso><a href="https://www.haproxy.org/download/3.1/doc/proxy-protocol.txt">Proxy Protocol
Spec</a></seealso>
<section id="processing"><title>Traitement des adresses distantes</title>
<?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: 1930711:1933503 (outdated) -->
+<!-- English Revision: 1933503 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
se présenter sous l'une des trois formes suivantes :</p>
<ol>
-<li>Un champ d'en-tête de requête HTTP (voir la <a
- href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a> pour
+<li>Un champ d'en-tête de requête HTTP (voir la <rfc>2616</rfc> pour
plus d'information à leur propos) ; par exemple : <code>Host</code>,
<code>User-Agent</code>, <code>Referer</code>, ou
<code>Accept-Language</code>. Il est possible d'utiliser une
<?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: 1932761:1933658 (outdated) -->
+<!-- English Revision: 1933658 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
directive <directive
module="mpm_common">ServerLimit</directive>.</p>
- <p>Pour les serveur threadés et hybrides (utilisant <em>par
- exemple</em> <module>event</module> ou <module>worker</module>),
+ <p>Pour les serveur threadés et hybrides (utilisant <em>par exemple</em>
+ <module>event</module> ou <module>worker</module>),
<directive>MaxRequestWorkers</directive> définit alors le nombre total de
- threads qui seront disponibles pour servir les clients. Dans le
- cas des MPMs hybrides, la valeur par défaut est <code>16</code>
- (directive <directive
- module="mpm_common">ServerLimit</directive>) multiplié par la valeur
- <code>25</code> (directive <directive module="mpm_common"
+ threads qui seront disponibles pour servir les clients. Pour les MPMs
+ hybrides et threadés, la valeur par défaut est <code>16</code> (directive
+ <directive module="mpm_common">ServerLimit</directive>) multiplié par la
+ valeur <code>25</code> (directive <directive module="mpm_common"
>ThreadsPerChild</directive>). Par conséquent, pour affecter à la
directive <directive>MaxRequestWorkers</directive> une valeur qui requiert
- plus de 16 processus, vous devez aussi augmenter la valeur de la
- directive <directive module="mpm_common"
->ServerLimit</directive>.</p>
+ plus de 16 processus, vous devez aussi augmenter la valeur de la directive
+ <directive module="mpm_common">ServerLimit</directive>.</p>
+
+ <p>Pour les MPMs threadés et hybrides, la valeur de la directive
+ <directive>MaxRequestWorkers</directive> doit supérieure ou égale à celle de
+ la directive <directive module="mpm_common">ThreadsPerChild</directive> et
+ doit être un multiple entier de cette dernière. Si elle n’est pas un
+ multiple de cette dernière, le serveur l’arrondit par le bas au démarrage au
+ multiple le plus proche et journalise un avertissement.</p>
+
+ <example><title>Avertissement : MaxRequestWorkers trop petit</title>
+ WARNING: MaxRequestWorkers of 10 is less than ThreadsPerChild
+ of 25, increasing to 25. MaxRequestWorkers must be at least as
+ large as the number of threads in a single server.
+ </example>
+
+ <example><title>Avertissement : MaxRequestWorkers n’est pas un multiple de
+ ThreadsPerChild</title>
+ WARNING: MaxRequestWorkers of 90 is not an integer multiple of
+ ThreadsPerChild of 25, decreasing to nearest multiple 75, for a
+ maximum of 3 servers.
+ </example>
<p>Le nom de la directive <directive>MaxRequestWorkers</directive>
était <directive>MaxClients</directive> avant la version 2.3.13. Cet
<p>La valeur de la directive <directive>ThreadsPerChild</directive> doit
être supérieure ou égale à 1. Une valeur inférieure à 1 sera automatiquement
augmentée à 1 et un avertissement sera journalisé.</p>
+
+ <p>La valeur de la directive <directive
+ module="mpm_common">MaxRequestWorkers</directive> doit être un multiple
+ entier de celle de la directive <directive>ThreadsPerChild</directive>. Voir
+ la directive <directive module="mpm_common">MaxRequestWorkers</directive>
+ pour les détails.</p>
</usage>
</directivesynopsis>