<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_reqtimeout - Serveur HTTP Apache Version 2.4</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" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<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.4</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_reqtimeout</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_reqtimeout.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_reqtimeout.html" title="Français">&nbsp;fr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Définit le délai maximum et le taux minimum de transfert des
données pour la réception des requêtes
</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>reqtimeout_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_reqtimeout.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.2.15 du serveur HTTP Apache</td></tr></table>
<h3>Sommaire</h3>

    <p>Ce module permet de définir aisément le délai maximum et le taux de
    transfert des données minimum pour la réception des requêtes. Si ce délai
    est dépassé ou ce taux trop faible, la connexion concernée sera fermée par
    le serveur.</p>

    <p>Cet évènement sera alors enregistré dans le journal au niveau de <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> <code>info</code>.</p>
    
    <p>Au besoin, la directive <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code>
    peut être modifiée pour un enregistrement dans le journal plus explicite :</p>
    <pre class="prettyprint lang-config">LogLevel reqtimeout:info</pre>

</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#requestreadtimeout">RequestReadTimeout</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__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_reqtimeout">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_reqtimeout">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Exemples</a></h2>

    <ol>
      <li>
	Accorde 5 secondes pour terminer la négociation TLS, 10 secondes pour la
	réception des en-têtes de la requête et 30 secondes pour la réception du
	corps :

        <pre class="prettyprint lang-config">RequestReadTimeout handshake=5 header=10 body=30</pre>

      </li>

      <li>
        Accorde au moins 10 secondes pour la réception du corps de
	la requête. Si le client envoie des données, augmente ce délai
	d'une seconde pour chaque paquet de 1000 octets reçus, sans
	limite supérieure (sauf si une limite a été
	spécifiée via la directive <code class="directive"><a href="../mod/core.html#limitrequestbody">LimitRequestBody</a></code>) :

        <pre class="prettyprint lang-config">RequestReadTimeout body=10,MinRate=1000</pre>

      </li>

      <li>
        Accorde au moins 10 secondes pour la réception des en-têtes de la
	requête. Si le client envoie des données, augmente ce délai
	d'une seconde pour chaque paquet de 500 octets reçus, mais
	n'alloue que 30 secondes pour les en-têtes de la requête :

        <pre class="prettyprint lang-config">RequestReadTimeout header=10-30,MinRate=500</pre>

      </li>

      <li>
        En général, un serveur doit avoir ses délais d'en-tête et de
	corps configurés. Si les serveurs virtuels http et https
	utilisent une configuration commune, les délais ne doivent pas
	être définis trop bas :

        <pre class="prettyprint lang-config">RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500</pre>

      </li>

    </ol>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="requestreadtimeout" id="requestreadtimeout">Directive</a> <a name="RequestReadTimeout" id="RequestReadTimeout">RequestReadTimeout</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit des délais maximums pour la négociation TLS, la réception
des en-têtes et/ou corps des requêtes en provenance du client.
</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>RequestReadTimeout
[handshake=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>rate</var>]
[header=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>MinRate</var>]
[body=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>MinRate</var>]
</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500</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_reqtimeout</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.2.15 du serveur HTTP
Apache ; désactivée par défaut depuis la version 2.3.14. La phase de
<code>négociation</code> est prise en compte à partir de la version 2.4.39.</td></tr>
</table>
    <p>Cette directive permet de définir différents timeouts pour la négociation
    TLS, la réception des en-têtes et/ou corps des requêtes en provenance du
    client. Si le client ne parvient pas à respecter ces timeouts, un code
    d'erreur <code>408 REQUEST TIME OUT</code> est envoyé.</p>

    <p>Pour les serveurs virtuels SSL, la valeur de timeout pour la
    <code>négociation</code> correspond au temps nécessaire pour la négociation
    SSL initiale. Si le navigateur du client est configuré pour demander des
    listes de révocations de certificats, et si le serveur correspondant n'est
    pas disponible, le timeout avant lequel le navigateur va abandonner son
    attente de CRL au cours de la négociation SSL initiale peut être assez
    important. Par conséquent, les valeurs de timeouts pour la
    <code>négociation</code> doivent prendre en compte un temps supplémentaire
    pour les serveurs virtuels SSL (si nécessaire). Le timeout concernant le
    corps inclut le temps nécessaire à la renégociation SSL (si elle est
    nécessaire).</p>

    <p>Lorsqu'une directive <code class="directive"><a href="../mod/core.html#acceptfilter">AcceptFilter</a></code>
    est active (ce qui est en général le cas sous Linux et FreeBSD), la socket
    n'est envoyée au processus du serveur qu'après la réception du premier octet
    (ou de l'ensemble de la requête si <code>httpready</code> est défini). Les
    timeouts configurés pour la négociation et les en-têtes via la directive
    <code class="directive">RequestReadTimeout</code> n'entrent en ligne de compte
    qu'une fois le socket reçu par le processus du serveur.</p>

    <p>Il existe trois méthodes pour spécifier le timeout pour chacune des trois
    phases (négociation, en-tête ou corps) :
    </p>

    <ul>

    <li><strong>Valeur de timeout fixe</strong>:<br />

    <div class="example"><p><code><var>phase</var>=<var>timeout</var></code></p></div>

    <p>Le temps en secondes alloué pour terminer l'ensemble de la phase
    (négociation, lecture de tous les en-têtes de la requête ou du corps de
    cette dernière). La valeur 0 signifie aucune limite.</p>
    </li>

    <li><strong>Désactivation du module pour un serveur virtuel</strong>:<br />

    <div class="example"><p><code>handshake=0 header=0 body=0</code></p></div>

    <p>Avec cet exemple, le module <code class="module"><a href="../mod/mod_reqtimeout.html">mod_reqtimeout</a></code> est
    complètement désactivé (notez que <code>handshake=0</code> correspond à la
    valeur par défaut et peut donc être omis).</p>
    </li>

    <li><strong>La valeur du timeout qui est augmentée lorsque des données
    sont reçues</strong> :<br />
    <div class="example"><p><code>
    <var>phase</var>=<var>timeout</var>,MinRate=<var>débit</var>
    </code></p></div>

    <p>Identique à ce qui précède, mais chaque fois que des données sont
    reçues, la valeur du timeout est augmentée en fonction du MinRate
    spécifié (en octets par seconde).</p>
    </li>

    <li><strong>La valeur du timeout augmente lorsque des données sont
    reçues, jusqu'à une limite supérieure</strong>:<br />
    <div class="example"><p><code>
    <var>phase</var>=<var>timeout</var>-<var>maxtimeout</var>,MinRate=<var>débit</var>
    </code></p></div>

    <p>Identique à ce qui précède, mais le timeout n'augmentera pas au
    delà de la borne supérieure du timeout spécifiée.</p>
    </li>

    </ul>





</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_reqtimeout.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_reqtimeout.html" title="Français">&nbsp;fr&nbsp;</a></p>
</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 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 Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_reqtimeout.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2022 The Apache Software Foundation.<br />Autorisé sous <a href="http://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/directives.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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>