]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_http2.html.fr.utf8
7b21aae6ac4d01626089326637458166e952586c
[apache] / docs / manual / mod / mod_http2.html.fr.utf8
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>mod_http2 - Serveur HTTP Apache Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body>
19 <div id="page-header">
20 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
21 <p class="apache">Serveur HTTP Apache Version 2.5</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
24 <div id="path">
25 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_http2</h1>
28 <div class="toplang">
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_http2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
30 <a href="../fr/mod/mod_http2.html" title="Français">&nbsp;fr&nbsp;</a></p>
31 </div>
32 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Support de la couche transport HTTP/2</td></tr>
33 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
34 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>http2_module</td></tr>
35 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_http2.c</td></tr>
36 <tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.17 du serveur
37     HTTP Apache</td></tr></table>
38 <h3>Sommaire</h3>
39
40         <p>Ce module ajoute le support de HTTP/2 (<a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a>) au serveur HTTP
41         Apache.</p>
42
43         <p>Il s'appuie sur la bibliothèque <a href="http://nghttp2.org/">libnghttp2</a> pour implémenter le
44         moteur de base http/2.</p>
45
46         <p>Pour mettre en oeuvre les fonctionnalités décrites dans ce
47         document, vous devez activer HTTP/2 en utilisant la directive
48         <code class="directive"><a href="../mod/core.html#protocols">Protocols</a></code>. HTTP/2 <a href="https://http2.github.io/faq/#does-http2-require-encryption">n'imposant
49         pas</a> de chiffrement, deux protocoles sont disponibles :
50         <code>h2</code> (HTTP/2 avec TLS) at <code>h2c</code> (HTTP/2 avec TCP).</p>
51
52         <p>Voici deux types de configuration courant :</p>
53
54         <div class="note"><h3>HTTP/2 dans un contexte de serveur virtuel (TLS seulement)</h3>
55         <pre class="prettyprint lang-config">Protocols h2 http/1.1</pre>
56
57         <p>Permet une négociation HTTP/2 (h2) via TLS ALPN au sein d'un
58         <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
59         sécurisé. La vérification du préambule HTTP/2 (mode direct, voir
60         <code class="directive"><a href="#h2direct">H2Direct</a></code>) est désactivée par
61         défaut pour <code>h2</code>.</p>
62         </div>
63
64         <div class="note"><h3>HTTP/2 dans un contexte de serveur (TLS et texte pur)</h3>
65         <pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>
66
67         <p>Permet une négociation HTTP/2 (h2) via TLS ALPN au sein d'un
68         <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
69         sécurisé. Permet aussi une négociation HTTP/2 en texte pur (h2c) en
70         effectuant une mise à jour depuis une connexion initiale HTTP/1.1 ou via
71         une vérification du préambule HTTP/2 (mode direct, voir
72         <code class="directive"><a href="#h2direct">H2Direct</a></code>).</p>
73         </div>
74
75         <p>Si vous avez besoin d'informations supplémentaires à propos du
76         protocole, veuillez vous reporter à la <a href="https://http2.github.io/faq">HTTP/2 FAQ</a>.</p>
77
78
79     </div>
80 <div id="quickview"><h3>Sujets</h3>
81 <ul id="topics">
82 <li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">Comment ça marche ?</a></li>
83 </ul><h3 class="directives">Directives</h3>
84 <ul id="toc">
85 <li><img alt="" src="../images/down.gif" /> <a href="#h2copyfiles">H2CopyFiles</a></li>
86 <li><img alt="" src="../images/down.gif" /> <a href="#h2direct">H2Direct</a></li>
87 <li><img alt="" src="../images/down.gif" /> <a href="#h2earlyhints">H2EarlyHints</a></li>
88 <li><img alt="" src="../images/down.gif" /> <a href="#h2maxsessionstreams">H2MaxSessionStreams</a></li>
89 <li><img alt="" src="../images/down.gif" /> <a href="#h2maxworkeridleseconds">H2MaxWorkerIdleSeconds</a></li>
90 <li><img alt="" src="../images/down.gif" /> <a href="#h2maxworkers">H2MaxWorkers</a></li>
91 <li><img alt="" src="../images/down.gif" /> <a href="#h2minworkers">H2MinWorkers</a></li>
92 <li><img alt="" src="../images/down.gif" /> <a href="#h2moderntlsonly">H2ModernTLSOnly</a></li>
93 <li><img alt="" src="../images/down.gif" /> <a href="#h2push">H2Push</a></li>
94 <li><img alt="" src="../images/down.gif" /> <a href="#h2pushdiarysize">H2PushDiarySize</a></li>
95 <li><img alt="" src="../images/down.gif" /> <a href="#h2pushpriority">H2PushPriority</a></li>
96 <li><img alt="" src="../images/down.gif" /> <a href="#h2pushresource">H2PushResource</a></li>
97 <li><img alt="" src="../images/down.gif" /> <a href="#h2serializeheaders">H2SerializeHeaders</a></li>
98 <li><img alt="" src="../images/down.gif" /> <a href="#h2streammaxmemsize">H2StreamMaxMemSize</a></li>
99 <li><img alt="" src="../images/down.gif" /> <a href="#h2tlscooldownsecs">H2TLSCoolDownSecs</a></li>
100 <li><img alt="" src="../images/down.gif" /> <a href="#h2tlswarmupsize">H2TLSWarmUpSize</a></li>
101 <li><img alt="" src="../images/down.gif" /> <a href="#h2upgrade">H2Upgrade</a></li>
102 <li><img alt="" src="../images/down.gif" /> <a href="#h2windowsize">H2WindowSize</a></li>
103 </ul>
104 <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_http2">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_http2">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
105 <ul class="seealso">
106 <li><a href="#comments_section">Commentaires</a></li></ul></div>
107 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
108 <div class="section">
109 <h2><a name="how-it-works" id="how-it-works">Comment ça marche ?</a> <a title="Lien permanent" href="#how-it-works" class="permalink">&para;</a></h2>
110
111     <h3><a name="dimensioning" id="dimensioning">Quantification des ressources
112     supplémentaires nécessaires à HTTP/2</a></h3>
113         <p>
114             Activer HTTP/2 sur votre serveur Apache a un impact sur la
115             consommation de ressources, et si votre site est très actif, il est
116             conseillé d'en prendre sérieusement en compte les implications.
117         </p>
118         <p>
119             HTTP/2 attribue à chaque requête qu'il reçoit son propre <em>thread
120             de travail</em> pour son traitement, la collecte des résultats et
121             l'envoie de ces derniers au client. Pour y parvenir, il lui faut
122             lancer des threads supplémentaires, et ceci constituera le premier
123             effet notable de l'activation de HTTP/2.
124         </p>
125         <p>
126             Dans l'implémentation actuelle, ces threads de travail font partie
127             d'un jeu de threads distinct de celui des threads de travail du MPM
128             avec lequel vous êtes familié. Il s'agit simplement du mode de
129             fonctionnement actuel, et il n'en sera pas obligatoirement toujours
130             ainsi (il est cependant probable que la situation restera inchangée
131             avec la version 2.4.x). De par ce mode de fonctionnement, les
132             threads de travail HTTP/2, ou plus simplement H2 ne seront pas
133             affichés par <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>. De même, ils ne seront pas
134             pris en compte par les directives du style <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>. Par contre, ils
135             utilisent par défaut la valeur de <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> si vous n'avez pas
136             spécifié d'autres valeurs via <code class="directive"><a href="#h2minworkers">H2MinWorkers</a></code> et <code class="directive"><a href="#h2maxworkers">H2MaxWorkers</a></code>.
137         </p>
138         <p>
139             Autre changement à surveiller : la consommation de mémoire. En
140             effet, comme HTTP/2 conserve plus d'informations sur le serveur pour
141             gérer toutes les requêtes en cours, leurs priorités et
142             interdépendances, il aura toujours besoin de plus de mémoire que
143             pour un traitement en HTTP/1.1. Trois directives permettent de
144             limiter l'empreinte mémoire d'une connexion HTTP/2 : <code class="directive"><a href="#h2maxsessionstreams">H2MaxSessionStreams</a></code>, <code class="directive"><a href="#h2windowsize">H2WindowSize</a></code> et <code class="directive"><a href="#h2streammaxmemsize">H2StreamMaxMemSize</a></code>.
145         </p>
146         <p>
147             La directive <code class="directive"><a href="#h2maxsessionstreams">H2MaxSessionStreams</a></code> permet de limiter
148             le nombre de requêtes simultanées qu'un client peut envoyer sur une
149             connexion HTTP/2. La valeur que vous allez définir dépend de votre
150             site. La valeur par défaut qui est de 100 est largement suffisante,
151             et à moins que vous ne soyez un peu juste en mémoire, je vous
152             conseille de ne pas la modifier. La plupart des requêtes qu'envoie
153             un client sont des requêtes de type GET sans corps qui n'utilisent
154             que très peu de mémoire en attendant le démarrage du traitement.
155
156         </p>
157         <p>
158             La directive <code class="directive"><a href="#h2windowsize">H2WindowSize</a></code>
159             permet de définir la taille maximale que peut avoir le corps d'une
160             requête que le client envoie avant d'attendre que le serveur
161             en demande d'avantage. En d'autres termes, il s'agit de la quantité
162             de données que le serveur peut stocker dans son tampon, valable pour
163             une requête.
164         </p>
165         <p>
166             En outre, la directive <code class="directive"><a href="#h2streammaxmemsize">H2StreamMaxMemSize</a></code> permet de définir
167             la quantité de données de la réponse qui doit être mise en tampon.
168             Chaque requête étant prise en charge par un thread H2Worker et
169             produisant des données que le serveur tente de transmettre au client
170             via une connexion HTTP/2, si le client n'est pas en mesure de lire
171             ces données assez rapidement, la connexion les mettra en tampon et
172             interrompra l'exécution du thread H2Worker correspondant.
173         </p>
174
175     
176
177     <h3><a name="misdirected" id="misdirected">Serveurs virtuels et requêtes mal
178     redirigées</a></h3>
179         <p>
180             De nombreux site utilisent le même certificat TLS pour plusieurs
181             serveurs virtuels. Ce certificat référence un nom de serveur
182             générique comme '*.example.org' ou plusieurs noms de serveur
183             différents. Les navigateurs qui utilisent HTTP/2 détectent ce
184             comportement et réutilisent une connexion déjà ouverte pour ces
185             serveurs.
186         </p>
187         <p>
188             Ceci améliore considérablement les performances, mais il y a un prix
189             à payer : il faut accorder un soin tout particulier à la
190             configuration de tels serveurs virtuels. Le problème réside dans le
191             fait que plusieurs requêtes pour plusieurs serveurs virtuels vont se
192             partager la même connexion TLS, et ceci empêche toute renégociation
193             car le standard HTTP/2 l'interdit.
194         </p>
195         <p>
196             Ainsi, lorsque plusieurs de vos serveurs virtuels utilisent le même
197             certificat et si vous souhaitez utiliser HTTP/2 pour y accéder, vous
198             devez vous assurer que tous vos serveurs virtuels possèdent
199             exactement la même configuration SSL. En particulier, ils doivent
200             utiliser les mêmes protocole, algorithme de chiffrement et
201             configuration pour la vérification du client.
202         </p>
203         <p>
204             Dans le cas contraire, Apache httpd le détectera et renverra au
205             client un code de réponse spécial, 421 Misdirected Request.
206         </p>
207     
208
209     <h3><a name="envvars" id="envvars">Variables d'environnement</a></h3>
210
211         <p>Ce module peut être configuré pour fournir des informations en
212         rapport avec HTTP/2 sous la forme de variables d'environnement
213         supplémentaires dans l'espace de nommage SSI et CGI, ainsi que dans les
214         configurations personnalisées de le journalisation (voir
215         <code>%{VAR_NAME}e</code>).
216         </p>
217
218         <table class="bordered">
219             
220             <tr>
221                 <th><a name="table3">Nom variable :</a></th>
222                 <th>Type :</th>
223                 <th>Description :</th>
224             </tr>
225             <tr><td><code>HTTPe</code></td><td>drapeau</td><td>HTTP/2 est utilisé.</td></tr>
226             <tr><td><code>H2PUSH</code></td><td>drapeau</td><td>La
227             fonctionnalité HTTP/2 Server Push est activée pour cette requête et
228             supportée par le client.</td></tr>
229             <tr><td><code>H2_PUSH</code></td><td>drapeau</td><td>autre nom pour <code>H2PUSH</code></td></tr>
230             <tr><td><code>H2_PUSHED</code></td><td>chaîne</td><td>vide ou
231             <code>PUSHED</code> pour une requête pushée par le serveur.</td></tr>
232             <tr><td><code>H2_PUSHED_ON</code></td><td>nombre</td><td>numéro du
233             flux HTTP/2 qui a déclenché le push de cette requête.</td></tr>
234             <tr><td><code>H2_STREAM_ID</code></td><td>nombre</td><td>numéro du
235             flux HTTP/2 de cette requête.</td></tr>
236             <tr><td><code>H2_STREAM_TAG</code></td><td>chaîne</td><td>identifiant
237             de flux unique du processus HTTP/2 composé de l'identifiant de la
238             connexion et de l'identifiant du flux séparés par <code>-</code>.</td></tr>
239         </table>
240
241     
242
243     </div>
244 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
245 <div class="directive-section"><h2><a name="h2copyfiles" id="h2copyfiles">Directive</a> <a name="H2CopyFiles" id="H2CopyFiles">H2CopyFiles</a> <a title="Lien permanent" href="#h2copyfiles" class="permalink">&para;</a></h2>
246 <table class="directive">
247 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contrôle la gestion des fichiers dans les réponses</td></tr>
248 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2CopyFiles on|off</code></td></tr>
249 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2CopyFiles off</code></td></tr>
250 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire, .htaccess</td></tr>
251 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>FileInfo</td></tr>
252 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
253 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
254 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.24 du serveur HTTP
255         Apache.</td></tr>
256 </table>
257             <p>
258                 Cette directive permet de définir la manière de gérer les
259                 contenus de fichiers dans les réponses. Lorsqu'elle est à <code>off</code>
260                 (sa valeur par défaut), les descripteurs de fichiers sont
261                 transmis par le processus de traitement de la requête vers la
262                 connexion principale en utilisant le système habituel de mise en
263                 réserve d'Apache pour gérer le durée de vie du fichier.
264             </p>
265             <p>
266                 Lorsqu'elle est à <code>on</code>, le contenu du fichier est
267                 recopier pendant le traitement de la requête et ces données
268                 mises en tampon sont transmises vers la connexion principale, ce
269                 qui s'avère avantageux lorsqu'un module tiers injecte dans la
270                 réponse des fichiers possédant des durées de vie différentes.
271             </p>
272             <p>
273                 Un exemple de ces modules tiers : <code>mod_wsgi</code> qui peut
274                 injecter des descripteurs de fichiers dans la réponse. Ces
275                 fichiers sont fermés lorsque Python estime que le traitement est
276                 terminé, alors que <code class="module"><a href="../mod/mod_http2.html">mod_http2</a></code> est probablement
277                 encore loin d'en avoir fini avec eux.
278             </p>
279         
280 </div>
281 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
282 <div class="directive-section"><h2><a name="h2direct" id="h2direct">Directive</a> <a name="H2Direct" id="H2Direct">H2Direct</a> <a title="Lien permanent" href="#h2direct" class="permalink">&para;</a></h2>
283 <table class="directive">
284 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activation du protocole H2 Direct</td></tr>
285 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2Direct on|off</code></td></tr>
286 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2Direct on pour h2c, off pour le protocole h2</code></td></tr>
287 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
288 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
289 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
290 </table>
291             <p>
292                 Cette directive permet d'activer/désactiver
293                 l'utilisation du mode HTTP/2 Direct. Elle doit être
294                 située dans une section <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> afin d'activer la
295                 communication directe HTTP/2 pour le serveur virtuel
296                 considéré.
297             </p>
298             <p>
299                 La notion de communication directe signifie que si les
300                 premiers octets reçus par le serveur correspondent à un
301                 en-tête HTTP/2, le protocole HTTP/2 est utilisé sans
302                 négociation supplémentaire. Ce mode est défini pour
303                 les transmissions en clair (h2c) dans la RFC 7540. Son
304                 utilisation avec les connexions TLS n'est pas
305                 officiellement supportée.
306             </p>
307             <p>
308                 Lorsque le protocole h2 ou h2c n'est pas activé via la
309                 directive <code class="directive"><a href="../mod/core.html#protocols">Protocols</a></code>, la recherche d'un en-tête HTTP/2 n'est
310                 jamais effectuée au sein d'une connexion. La directive
311                 <code class="directive">H2Direct</code> ne produit alors aucun effet. Ceci est
312                 important pour les connexions qui utilisent un protocole
313                 pour lequel une lecture initiale peut entraîner un
314                 blocage définitif comme NNTP.
315             </p>
316             <p>
317                 Pour un client qui sait qu'un serveur supporte h2c, la
318                 communication directe HTTP/2 dispense le client d'une
319                 mise à jour HTTP/1.1, ce qui entraîne une amélioration
320                 des performances et évite les restrictions sur les corps
321                 de requête suite à une mise à jour.
322             </p>
323             <p>
324                 Cette directive rend aussi h2c plus attractif pour les
325                 communications de serveur à serveur lorsque la connexion
326                 est sure ou peut être sécurisée d'une manière ou d'une
327                 autre.
328             </p>
329             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2Direct on</pre>
330 </div>
331         
332 </div>
333 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
334 <div class="directive-section"><h2><a name="h2earlyhints" id="h2earlyhints">Directive</a> <a name="H2EarlyHints" id="H2EarlyHints">H2EarlyHints</a> <a title="Lien permanent" href="#h2earlyhints" class="permalink">&para;</a></h2>
335 <table class="directive">
336 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contrôle l'envoi de codes d'état 103</td></tr>
337 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2EarlyHints on|off</code></td></tr>
338 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2EarlyHints off</code></td></tr>
339 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
340 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
341 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
342 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.24 du serveur HTTP
343         Apache.</td></tr>
344 </table>
345             <p>
346                 Cette directive permet de définir si les réponses intermédiaires
347                 contenant un code d'état HTTP 103 doivent être envoyées au
348                 client ou non. Par défaut ce n'est actuellement pas le cas car
349                 certains clients ont encore des problèmes avec les réponses
350                 intermédiaires inattendues.
351             </p>
352             <p>
353                 Lorsque cette directive est définie à <code>on</code>, les
354                 ressources PUSHées définie par la directive
355                 <code>H2PushResource</code> déclenchent une réponse
356                 intermédiaire 103 avant la réponse finale. Cette réponse 103
357                 comporte des en-têtes <code>Link</code> qui provoquent le
358                 <code>préchargement</code> des ressources considérées.
359             </p>
360         
361 </div>
362 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
363 <div class="directive-section"><h2><a name="h2maxsessionstreams" id="h2maxsessionstreams">Directive</a> <a name="H2MaxSessionStreams" id="H2MaxSessionStreams">H2MaxSessionStreams</a> <a title="Lien permanent" href="#h2maxsessionstreams" class="permalink">&para;</a></h2>
364 <table class="directive">
365 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Nombre maximal de flux actifs par session HTTP/2.</td></tr>
366 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2MaxSessionStreams <em>n</em></code></td></tr>
367 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2MaxSessionStreams 100</code></td></tr>
368 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
369 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
370 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
371 </table>
372             <p>
373                 Cette directive permet de définir le nombre maximal de flux
374                 actifs par session (connexion) HTTP/2 accepté par le serveur.
375                 Selon la RFC 7540, un flux est considéré comme actif s'il n'est
376                 ni <code>en attente</code> ni <code>fermé</code>.
377             </p>
378             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2MaxSessionStreams 20</pre>
379 </div>
380         
381 </div>
382 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
383 <div class="directive-section"><h2><a name="h2maxworkeridleseconds" id="h2maxworkeridleseconds">Directive</a> <a name="H2MaxWorkerIdleSeconds" id="H2MaxWorkerIdleSeconds">H2MaxWorkerIdleSeconds</a> <a title="Lien permanent" href="#h2maxworkeridleseconds" class="permalink">&para;</a></h2>
384 <table class="directive">
385 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Nombre maximal de secondes pendant lequel une unité de
386         traitement h2 pourra rester inactive sans être arrêtée.</td></tr>
387 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2MaxWorkerIdleSeconds <em>n</em></code></td></tr>
388 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2MaxWorkerIdleSeconds 600</code></td></tr>
389 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
390 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
391 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
392 </table>
393             <p>
394                 Cette directive permet de définir le nombre maximal de secondes
395                 pendant lequel une unité de traitement h2 pourra rester inactive
396                 avant de s'arrêter elle-même. Cet arrêt ne peut cependant se
397                 produire que si le nombre d'unités de traitement h2 dépasse
398                 <code class="directive"><a href="#h2minworkers">H2MinWorkers</a></code>.
399             </p>
400             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2MaxWorkerIdleSeconds 20</pre>
401 </div>
402         
403 </div>
404 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
405 <div class="directive-section"><h2><a name="h2maxworkers" id="h2maxworkers">Directive</a> <a name="H2MaxWorkers" id="H2MaxWorkers">H2MaxWorkers</a> <a title="Lien permanent" href="#h2maxworkers" class="permalink">&para;</a></h2>
406 <table class="directive">
407 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Nombre maximal de threads à utiliser pour chaque processus
408         enfant.</td></tr>
409 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2MaxWorkers <em>n</em></code></td></tr>
410 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
411 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
412 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
413 </table>
414             <p>
415                 Cette directive permet de définir le nombre maximal de threads à
416                 lancer pour le traitement HTTP/2 de chaque processus enfant. Si
417                 cette directive n'est pas définie, <code class="module"><a href="../mod/mod_http2.html">mod_http2</a></code>
418                 choisira une valeur appropriée en fonction du module <code>mpm</code>
419                 utilisé.
420
421                 This directive sets the maximum number of worker threads to spawn
422                 per child process for HTTP/2 processing. If this directive is not used,
423                 <code>mod_http2</code> will chose a value suitable for the <code>mpm</code>
424                 module loaded.
425             </p>
426             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2MaxWorkers 20</pre>
427 </div>
428         
429 </div>
430 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
431 <div class="directive-section"><h2><a name="h2minworkers" id="h2minworkers">Directive</a> <a name="H2MinWorkers" id="H2MinWorkers">H2MinWorkers</a> <a title="Lien permanent" href="#h2minworkers" class="permalink">&para;</a></h2>
432 <table class="directive">
433 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Nombre minimal de threads à utiliser pour chaque processus
434         enfant.</td></tr>
435 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2MinWorkers <em>n</em></code></td></tr>
436 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale</td></tr>
437 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
438 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
439 </table>
440             <p>
441                 Cette directive permet de définir le nombre minimal de threads à
442                 lancer pour le traitement HTTP/2 de chaque processus enfant. Si
443                 cette directive n'est pas définie, <code class="module"><a href="../mod/mod_http2.html">mod_http2</a></code>
444                 choisira une valeur appropriée en fonction du module <code>mpm</code>
445                 utilisé.
446             </p>
447             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2MinWorkers 10</pre>
448 </div>
449         
450 </div>
451 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
452 <div class="directive-section"><h2><a name="h2moderntlsonly" id="h2moderntlsonly">Directive</a> <a name="H2ModernTLSOnly" id="H2ModernTLSOnly">H2ModernTLSOnly</a> <a title="Lien permanent" href="#h2moderntlsonly" class="permalink">&para;</a></h2>
453 <table class="directive">
454 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Impose les connexions HTTP/2 en mode "TLS moderne"
455         seulement</td></tr>
456 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2ModernTLSOnly on|off</code></td></tr>
457 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2ModernTLSOnly on</code></td></tr>
458 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
459 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
460 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
461 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.18 du serveur HTTP
462         Apache.</td></tr>
463 </table>
464             <p>
465                 Cette directive permet de définir si les vérifications de
466                 sécurité sur les connexions HTTP/2 doivent être exclusivement en
467                 mode TLS (https:). Elle peut être placée au niveau du serveur
468                 principal ou dans une section <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>.
469             </p>
470             <p>
471                 Les vérifications de sécurité nécessitent TLSv1.2 au minimum et
472                 l'absence de tout algorithme de chiffrement listé dans la RFC
473                 7540, Appendix A. Ces vérifications seront étendues lorsque de
474                 nouveaux prérequis en matière de sécurité seront mis en place.
475             </p>
476             <p>
477                 Le nom provient des définitions Mozilla <a href="https://wiki.mozilla.org/Security/Server_Side_TLS">Security/Server
478                 Side TLS</a> où il est question de "modern compatibility".
479                 Mozilla Firefox et d'autres navigateurs imposent la "modern
480                 compatibility" pour les connexions HTTP/2. Comme toute chose en
481                 matière de sécurité opérationnelle, c'est une cible mouvante
482                 susceptible d'évoluer dans le futur.
483             </p>
484             <p>
485                 Un des buts de ces vérifications dans <code class="module"><a href="../mod/mod_http2.html">mod_http2</a></code> tend à imposer
486                 ce niveau de sécurité pour toutes les connexions, et non
487                 seulement celles en provenance des navigateurs web. Un autre but
488                 est l'interdiction d'utiliser HTTP/2 en tant que protocole dans
489                 les négociations si les prérequis ne sont pas respectés.
490             </p>
491             <p>
492                 En fin de compte, la sécurité de la connexion TLS est déterminée
493                 par les directives de configuration du serveur pour <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.
494             </p>
495             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2ModernTLSOnly off</pre>
496 </div>
497         
498 </div>
499 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
500 <div class="directive-section"><h2><a name="h2push" id="h2push">Directive</a> <a name="H2Push" id="H2Push">H2Push</a> <a title="Lien permanent" href="#h2push" class="permalink">&para;</a></h2>
501 <table class="directive">
502 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activation/désactivation du server push H2</td></tr>
503 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2Push on|off</code></td></tr>
504 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2Push on</code></td></tr>
505 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire, .htaccess</td></tr>
506 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
507 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
508 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.18 du serveur HTTP
509         Apache.</td></tr>
510 </table>
511             <p>
512                 Cette directive permet d'activer/désactiver
513                 l'utilisation de la fonctionnalité server push du
514                 protocole HTTP/2.
515             </p>
516             <p>
517                 Lorsqu'un client demande une ressource particulière, le
518                 protocole HTTP/2 permet au serveur de lui fournir des
519                 ressources supplémentaires. Ceci s'avère utile lorsque
520                 ces ressources sont reliées entre elles, ce qui peut
521                 laisser supposer que le client va probablement les
522                 demander dans un délai plus ou moins long. Le mécanisme
523                 de pushing permet alors au client d'économiser le temps
524                 qu'il lui aurait fallu pour demander ces ressources
525                 supplémentaires lui-même. Par contre, fournir au client
526                 des ressources dont il n'a pas besoin ou qu'il possède
527                 déjà constitue une perte de bande passante.
528             </p>
529             <p>
530                 Les server pushes sont détectés en inspectant les
531                 en-têtes <code>Link</code> des réponses (voir
532                 https://tools.ietf.org/html/rfc5988 pour la
533                 spécification). Lorsqu'un lien spécifié de cette manière
534                 possède l'attribut <code>rel=preload</code>, il est
535                 considéré comme devant faire l'objet d'un push.
536             </p>
537             <p>
538                 Les en-têtes link des réponses sont soit définis par
539                 l'application, soit configurés via la directive
540                 <code class="directive">H2PushResource</code> ou en utilisant
541                 <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> comme suit :
542             </p>
543             <div class="example"><h3>Exemple de configuration d'en-tête link via mod_headers</h3><pre class="prettyprint lang-config">&lt;Location /index.html&gt;
544     Header add Link "&lt;/css/site.css&gt;;rel=preload"
545     Header add Link "&lt;/images/logo.jpg&gt;;rel=preload"
546 &lt;/Location&gt;</pre>
547 </div>
548             <p>
549                 Comme le montre l'exemple, il est possible d'ajouter
550                 autant d'en-têtes link que l'on souhaite à une réponse, ce qui déclenchera
551                 autant de pushes. Cette fonctionnalité doit donc être
552                 utilisée avec prudence car le module ne vérifie pas si
553                 une ressource n'a pas déjà été "pushée" vers un client.
554             </p>
555             <p>
556                 Les PUSH HTTP/2 sont activés par défaut. Vous pouvez
557                 activer/désactiver cette fonctionnalité pour toute connexion au
558                 serveur au niveau global ou serveur virtuel. Vous pouvez en
559                 outre désactiver PUSH pour un jeu de ressources dans une
560                 section Directory/Location. Notez que ceci permet de contrôler
561                 quelles ressources peuvent déclencher un PUSH, mais pas les
562                 ressources qui peuvent être envoyées via PUSH.
563             </p>
564             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2Push off</pre>
565 </div>
566             <p>
567                 Enfin, il est important de savoir que les pushes ne se
568                 produisent que si le client en manifeste le désir ; la
569                 plupart des navigateurs le font, mais certains, comme
570                 Safari 9, ne le font pas. En outre, les pushes ne se produisent que
571                 pour les ressources de la même <em>autorité</em> que celle de la
572                 réponse originale.
573             </p>
574         
575 </div>
576 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
577 <div class="directive-section"><h2><a name="h2pushdiarysize" id="h2pushdiarysize">Directive</a> <a name="H2PushDiarySize" id="H2PushDiarySize">H2PushDiarySize</a> <a title="Lien permanent" href="#h2pushdiarysize" class="permalink">&para;</a></h2>
578 <table class="directive">
579 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Taille du journal des Pushes H2</td></tr>
580 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2PushDiarySize n</code></td></tr>
581 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2PushDiarySize 256</code></td></tr>
582 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
583 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
584 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
585 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.19 du serveur HTTP
586         Apache.</td></tr>
587 </table>
588             <p>
589                 Cette directive permet de définir le nombre maximum de pushes
590                 qui seront enregistrés pour une connexion HTTP/2. Elle peut être
591                 placée dans une section <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> afin de définir le nombre
592                 de pushes pour le serveur virtuel considéré.
593             </p>
594             <p>
595                 Le journal des pushes enregistre un condensé (sous la forme d'un
596                 nombre de 64 bits) des ressources préchargées (leurs URLs) afin
597                 d'éviter les duplications de pushes pour une même connexion.
598                 Cependant, ces données ne sont pas conservées, et les clients
599                 qui ouvrent une nouvelle connexion se verront à nouveau affecter les
600                 mêmes pushes. A ce titre, une étude est en cours pour permettre
601                 au client de supprimer le condensé des ressources qu'il possède
602                 déjà, et par là-même de réinitialiser le journal des pushes à
603                 chaque nouvelle connexion.
604             </p>
605             <p>
606                 Si la taille maximale est atteinte, les nouvelles entrées
607                 remplacent les plus anciennes. Une entrée du journal nécessitant
608                 8 octets, un journal de 256 entrées consomme 2 Ko de mémoire.
609             </p>
610             <p>
611                 Si cette directive est définie à 0, le journal des pushes est
612                 désactivé.
613             </p>
614         
615 </div>
616 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
617 <div class="directive-section"><h2><a name="h2pushpriority" id="h2pushpriority">Directive</a> <a name="H2PushPriority" id="H2PushPriority">H2PushPriority</a> <a title="Lien permanent" href="#h2pushpriority" class="permalink">&para;</a></h2>
618 <table class="directive">
619 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Priorité des pushes H2</td></tr>
620 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2PushPriority mime-type [after|before|interleaved] [weight]</code></td></tr>
621 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2PushPriority * After 16</code></td></tr>
622 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
623 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
624 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
625 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.18 du serveur HTTP
626         Apache. Nécessite la bibliothèque nghttp2 version 1.5.0 ou supérieure.</td></tr>
627 </table>
628             <p>
629                 Cette directive permet de définir une gestion de priorité des
630                 pushes en fonction du type de contenu de la réponse. Elle est en
631                 général définie au niveau du serveur principal, mais peut aussi
632                 l'être au niveau d'un serveur virtuel.
633             </p>
634             <p>
635                 Les pushes HTTP/2 sont toujours liés à une requête client.
636                 Chaque paire requête/réponse de cette sorte, ou <em>flux</em>,
637                 possède une dépendance et un poids qui définissent la
638                 <em>priorité</em> du flux.
639             </p>
640             <p>
641                 Lorsqu'un flux <em>dépend</em> d'un autre, disons X dépend de Y,
642                 alors Y reçoit toute la bande passante avant que X n'en reçoive
643                 ne serait-ce qu'une partie. Notez que cela ne signifie en rien
644                 que Y bloque X ; en effet, si Y n'a aucune donnée à envoyer,
645                 toute la bande passante qui lui est allouée peut être utilisée
646                 par X.
647             </p>
648             <p>
649                 Lorsque plusieurs flux dépendent d'un même autre flux, disons X1
650                 et X2 dépendent tous deux de Y, le <em>poids</em> détermine la
651                 bande passante allouée. Ainsi, si X1 et X2 possèdent le même
652                 poids, ils recevront tous deux la moitié de la bande passante
653                 disponible. Si le poids de X1 est égal au double de celui de X2,
654                 X1 recevra une bande passante double de celle de X2.
655
656             </p>
657             <p>
658                 En fin de compte, tout flux dépend du flux <em>racine</em> qui
659                 reçoit toute la bande passante disponible mais n'envoie jamais
660                 de données. Cette bande passante est ainsi répartie entre les flux
661                 enfants selon leur poids. Ces derniers l'utilisent alors pour
662                 envoyer leurs données ou pour la répartir entre leurs propres
663                 flux enfants, et ainsi de suite. Si aucun des flux enfants n'a
664                 de données à envoyer, la bande passante est attribuée à d'autres
665                 flux selon les mêmes règles.
666             </p>
667             <p>
668                 Ce système de priorités a été conçu de façon a toujours pouvoir
669                 utiliser la bande passante disponible tout en définissant des
670                 priorités et en attribuant des poids aux différents flux. Ainsi,
671                 tous les flux sont en général initialisés par le client qui
672                 lui-même définit les priorités.
673             </p>
674             <p>
675                 Seul le fait de savoir qu'un flux implique un PUSH permet au
676                 serveur de décider quelle est la priorité <em>initiale</em> d'un
677                 tel flux. Dans les exemples ci-dessous, X est le flux client. Il
678                 dépend de Y et le serveur décide de "PUSHer" les flux P1 et P2
679                 sur X.
680             </p>
681             <p>
682                 La règle de priorité par défaut est :
683             </p>
684             <div class="example"><h3>Règle de priorité par défaut</h3><pre class="prettyprint lang-config">H2PushPriority * After 16</pre>
685 </div>
686             <p>
687                 Elle peut se traduire par "Envoyer un flux PUSH avec tout type
688                 de contenu et dépendant du flux client avec le poids 16". P1 et
689                 P2 seront alors envoyés après X, et comme leurs poids sont
690                 identiques, il se verront allouer la même quantité de bande
691                 passante.
692             </p>
693             <div class="example"><h3>Règle de priorité entrelacée</h3><pre class="prettyprint lang-config">H2PushPriority text/css Interleaved 256</pre>
694 </div>
695             <p>
696                 Ce qui peut se traduire par "Envoyer toute ressource CSS dans la
697                 même dépendance et avec le même poids que le flux client". Si le
698                 type de contenu de P1 est "text/css", il dépendra de Y (comme X)
699                 et son poids effectif sera calculé selon la formule : <code>P1ew
700                 = Xw * (P1w / 256)</code>. Si P1w est de 256, Le poids effectif
701                 de P1 sera le même que celui de X. Si X et P1 ont des données à
702                 envoyer, il se verront allouer la même quantité de bande
703                 passante.
704             </p>
705             <p>
706                 Avec un Pw de 512, un flux entrelacé et PUSHé aura un poids
707                 double de celui de X. Avec un poids de 128, son poids ne sera
708                 que la moitié de celui de X. Notez que les poids effectifs sont
709                 toujours plafonnés à 256.
710
711             </p>
712             <div class="example"><h3>Règle de priorité Before</h3><pre class="prettyprint lang-config">H2PushPriority application/json Before</pre>
713 </div>
714             <p>
715                 Dans cet exemple, tout flux PUSHé dont le contenu est de type
716                 'application/json' sera envoyé <em>avant</em> X, ce qui rend P1
717                 dépendant de Y et X dépendant de P1. Ainsi, X sera mis en
718                 attente aussi longtemps que P1 aura des données à envoyer. Le
719                 poids effectif est hérité du flux client, et l'attribution d'un
720                 poids spécifique n'est pas autorisée.
721             </p>
722             <p>
723                 Vous devez garder à l'esprit que les spécifications en matière
724                 de priorités sont limitées par les ressources disponibles du
725                 serveur. Si un serveur ne dispose d'aucun processus/thread de
726                 travail pour les flux PUSHés, les données du flux considéré ne
727                 seront envoyées que lorsque les autres flux auront terminé
728                 l'envoi des leurs.
729             </p>
730             <p>
731                 Enfin et surtout, il convient de tenir compte de certaines
732                 particularités de la syntaxe de cette directive :
733              </p>
734             <ol>
735                 <li>'*' est la seule expression permettant de remplacer tout
736                 type de contenu. 'image/*' ne fonctionnera pas.</li>
737                 <li>La dépendance par défaut est 'After'.</li>
738                 <li>Il existe aussi des poids par défaut : pour 'After' le poids
739                 est de 16, alors que pour 'interleaved' il est de 256.
740                 </li>
741             </ol>
742             <div class="example"><h3>Exemples de règles</h3><pre class="prettyprint lang-config">H2PushPriority application/json 32         # une règle de priorité 'After'
743 H2PushPriority image/jpeg before           # poid hérité
744 H2PushPriority text/css   interleaved      # poids de 256 par défaut</pre>
745 </div>
746          
747 </div>
748 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
749 <div class="directive-section"><h2><a name="h2pushresource" id="h2pushresource">Directive</a> <a name="H2PushResource" id="H2PushResource">H2PushResource</a> <a title="Lien permanent" href="#h2pushresource" class="permalink">&para;</a></h2>
750 <table class="directive">
751 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Déclare des ressources à proposer ("pusher") au client</td></tr>
752 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2PushResource [add] path [critical]</code></td></tr>
753 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire, .htaccess</td></tr>
754 <tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>FileInfo</td></tr>
755 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
756 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
757 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.24 du serveur HTTP
758         Apache.</td></tr>
759 </table>
760             <p>
761                 Lorsqu'il sont activés pour un répertoire, les PUSHes HTTP/2 seront
762                 tentés pour tous les chemins ajoutés via cette directive. Cette
763                 dernière peut être utilisée plusieurs fois pour le même
764                 répertoire.
765             </p>
766             <p>
767                 Cette directive propose des ressources beaucoup plus tôt que les
768                 en-têtes <code>Link</code> de <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>.
769                 <code class="module"><a href="../mod/mod_http2.html">mod_http2</a></code> présente ces ressources au client via
770                 une réponse intermédiaire <code>103 Early Hints</code>. Ceci
771                 implique que les clients qui ne supportent pas PUSH recevront
772                 quand-même rapidement des propositions de préchargement.
773             </p>
774             <p>
775                 A la différence de la définition d'en-têtes de réponse
776                 <code>Link</code> via <code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code>, cette
777                 directive n'aura d'effet que pour les connexions HTTP/2.
778             </p>
779             <p>
780                 En ajoutant l'option <code>critical</code> à une telle
781                 ressource, le serveur la traitera prioritairement, et une fois
782                 les données disponibles, ces dernières seront envoyées avant les
783                 données de la requête principale.
784             </p>
785         
786 </div>
787 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
788 <div class="directive-section"><h2><a name="h2serializeheaders" id="h2serializeheaders">Directive</a> <a name="H2SerializeHeaders" id="H2SerializeHeaders">H2SerializeHeaders</a> <a title="Lien permanent" href="#h2serializeheaders" class="permalink">&para;</a></h2>
789 <table class="directive">
790 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Active/désactive la sérialisation du traitement des
791         requêtes/réponses</td></tr>
792 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2SerializeHeaders on|off</code></td></tr>
793 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2SerializeHeaders off</code></td></tr>
794 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
795 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
796 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
797 </table>
798             <p>
799                 Cette directive permet de définir si les requêtes HTTP/2 doivent
800                 être sérialisées au format HTTP/1.1 pour être traitées par le
801                 noyau de <code>httpd</code>, ou si les données binaires reçues
802                 doivent être passées directement aux <code>request_rec</code>s.
803             </p>
804             <p>
805                 La sérialisation dégrade les performances, mais garantit une
806                 meilleure compatibilité ascendante lorsque des filtres ou
807                 programmes accroche personnalisés en ont besoin.
808             </p>
809             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2SerializeHeaders on</pre>
810 </div>
811         
812 </div>
813 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
814 <div class="directive-section"><h2><a name="h2streammaxmemsize" id="h2streammaxmemsize">Directive</a> <a name="H2StreamMaxMemSize" id="H2StreamMaxMemSize">H2StreamMaxMemSize</a> <a title="Lien permanent" href="#h2streammaxmemsize" class="permalink">&para;</a></h2>
815 <table class="directive">
816 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Quantité maximale de données en sortie mises en tampon par
817         flux.</td></tr>
818 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2StreamMaxMemSize <em>bytes</em></code></td></tr>
819 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2StreamMaxMemSize 65536</code></td></tr>
820 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
821 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
822 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
823 </table>
824             <p>
825                 Cette directive permet de définir la quantité maximale de
826                 données en sortie mises en tampon mémoire pour un flux actif. Ce
827                 tampon mémoire n'est pas alloué pour chaque flux en tant que
828                 tel. Les quantités de mémoire sont définies en fonction de
829                 cette limite lorsqu'elles sont sur le point d'être allouées. Le
830                 flux s'arrête lorsque la limite a été atteinte, et ne reprendra
831                 que lorsque les données du tampon auront été transmises au
832                 client.
833             </p>
834             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2StreamMaxMemSize 128000</pre>
835 </div>
836         
837 </div>
838 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
839 <div class="directive-section"><h2><a name="h2tlscooldownsecs" id="h2tlscooldownsecs">Directive</a> <a name="H2TLSCoolDownSecs" id="H2TLSCoolDownSecs">H2TLSCoolDownSecs</a> <a title="Lien permanent" href="#h2tlscooldownsecs" class="permalink">&para;</a></h2>
840 <table class="directive">
841 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td /></tr>
842 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2TLSCoolDownSecs <em>seconds</em></code></td></tr>
843 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2TLSCoolDownSecs 1</code></td></tr>
844 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
845 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
846 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
847 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.18 du serveur HTTP
848         Apache.</td></tr>
849 </table>
850             <p>
851                 Cette directive permet de spécifier le nombre de secondes avant
852                 lequel une connexion TLS inactive va diminuer
853                 la taille des paquets de données à une valeur inférieure (~1300
854                 octets). Elle peut être définie au niveau du serveur principal
855                 ou pour un <code class="directive"><a href="../mod/core.html#serveur virtuel">&lt;serveur
856                 virtuel&gt;</a></code> spécifique.
857             </p>
858             <p>
859                 Voir la directive <code class="directive"><a href="#h2tlswarmupsize">H2TLSWarmUpSize</a></code> pour une description
860                 du "préchauffage" de TLS. La directive <code class="directive">H2TLSCoolDownSecs</code> met en
861                 lumière le fait que les connexions peuvent se détériorer au bout
862                 d'un certain temps (et au fur et à mesure des corrections du
863                 flux TCP), et cela même si elle sont inactives. Pour ne pas
864                 détériorer les performances d'une manière générale, il est par
865                 conséquent préférable de revenir à la phase de préchauffage
866                 lorsqu'aucune donnée n'a été transmise pendant un certain nombre
867                 de secondes.
868             </p>
869             <p>
870                 Dans les situations où les connexions peuvent être considérées
871                 comme fiables, ce délai peut être désactivé en définissant cette
872                 directive à 0.
873             </p>
874             <p>
875                 Dans l'exemple suivant, la directive est définie à 0, ce qui
876                 désactive tout retour à une phase de préchauffage des connexions
877                 TLS. Les connexions TLS déjà préchauffées conservent donc toujours
878                 leur taille de paquet de données maximale.
879             </p>
880             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2TLSCoolDownSecs 0</pre>
881 </div>
882         
883 </div>
884 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
885 <div class="directive-section"><h2><a name="h2tlswarmupsize" id="h2tlswarmupsize">Directive</a> <a name="H2TLSWarmUpSize" id="H2TLSWarmUpSize">H2TLSWarmUpSize</a> <a title="Lien permanent" href="#h2tlswarmupsize" class="permalink">&para;</a></h2>
886 <table class="directive">
887 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td /></tr>
888 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2TLSWarmUpSize <em>amount</em></code></td></tr>
889 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2TLSWarmUpSize 1048576</code></td></tr>
890 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
891 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
892 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
893 <tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.18 du serveur HTTP
894         Apache.</td></tr>
895 </table>
896             <p>
897                 Cette directive permet de définir le nombre d'octets à envoyer
898                 dans les petits enregistrements TLS (~1300 octets) avant
899                 d'atteindre leur taille maximale de 16 ko pour les connexions
900                 https: HTTP/2. Elle peut être définie au niveau du serveur
901                 principal ou pour des <code class="directive"><a href="../mod/core.html#serveurs virtuels">&lt;Serveurs virtuels&gt;</a></code> spécifiques.
902             </p>
903             <p>
904                 Les mesures effectuées par les <a href="https://www.igvita.com">laboratoires de performances de
905                 Google</a> montrent que les meilleurs performances sont atteintes
906                 pour les connexions TLS si la taille initiale des
907                 enregistrements reste en deça du niveau du MTU afin de permettre
908                 à la totatlité d'un enregistrement d'entrer dans un paquet IP.
909             </p>
910             <p>
911                 Comme TCP ajuste son contrôle de flux et sa taille de fenêtre,
912                 des enregistrements TLS trop longs peuvent rester en file
913                 d'attente ou même être perdus et devoir alors être réémis. Ceci
914                 est bien entendu vrai pour tous les paquets ; cependant, TLS a
915                 besoin de la totalité de l'enregistrement pour pouvoir le
916                 déchiffrer. Tout octet manquant rendra impossible l'utilisation
917                 de ceux qui ont été reçus.
918             </p>
919             <p>
920                 Lorqu'un nombre suffisant d'octets a été transmis avec succès,
921                 la connexion TCP est stable, et la taille maximale (16 ko) des
922                 enregistrements TLS peut être utilisée pour des performances
923                 optimales.
924             </p>
925             <p>
926                 Dans les architectures où les serveurs sont atteints par des
927                 machines locales ou pour les connexions de confiance seulement,
928                 la valeur de cette directive peut être définie à 0, ce qui a
929                 pour effet de désactiver la "phase de chauffage".
930             </p>
931             <p>
932                 Dans l'exemple suivant, la phase de chauffage est effectivement
933                 désactivée en définissant la directive à 0.
934             </p>
935             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2TLSWarmUpSize 0</pre>
936 </div>
937         
938 </div>
939 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
940 <div class="directive-section"><h2><a name="h2upgrade" id="h2upgrade">Directive</a> <a name="H2Upgrade" id="H2Upgrade">H2Upgrade</a> <a title="Lien permanent" href="#h2upgrade" class="permalink">&para;</a></h2>
941 <table class="directive">
942 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Activation/Désactivation du protocole de mise à jour H2</td></tr>
943 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2Upgrade on|off</code></td></tr>
944 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2Upgrade on pour h2c, off pour h2</code></td></tr>
945 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire, .htaccess</td></tr>
946 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
947 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
948 </table>
949             <p>
950                 Cette directive permet d'activer/désactiver l'utilisation de la
951                 méthode de mise à jour pour passer de HTTP/1.1 à HTTP/2. Elle
952                 doit être placée dans une section <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code> afin d'activer la mise à
953                 jour vers HTTP/2 pour le serveur virtuel considéré.
954             </p>
955             <p>
956                 Cette méthode de changement de protocole est définie dans
957                 HTTP/1.1 et utilise l'en-tête "Upgrade" (d'où son nom) pour
958                 indiquer l'intention d'utiliser un autre protocole. Cet en-tête
959                 peut être présent dans toute requête sur une connexion HTTP/1.1.
960             </p>
961             <p>
962                 Elle activée par défaut pour les transmissions en clair
963                 (h2c), et désactivée avec TLS (h2), comme préconisé par la RFC
964                 7540.
965             </p>
966             <p>
967                 Sachez cependant que les mises à jour ne sont acceptées que pour
968                 les requêtes qui ne possèdent pas de corps. Le requêtes de type
969                 POST et PUT avec un contenu ne feront jamais l'objet d'une mise
970                 à jour vers HTTP/2. Se référer à la documentation de la
971                 directive <code class="directive"><a href="#h2direct">H2Direct</a></code> pour
972                 envisager une alternative à Upgrade.
973             </p>
974             <p>
975                 Cette directive n'a d'effet que si h2 ou h2c est activé via la
976                 directive <code class="directive"><a href="../mod/core.html#protocols">Protocols</a></code>.
977             </p>
978             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2Upgrade on</pre>
979 </div>
980         
981 </div>
982 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
983 <div class="directive-section"><h2><a name="h2windowsize" id="h2windowsize">Directive</a> <a name="H2WindowSize" id="H2WindowSize">H2WindowSize</a> <a title="Lien permanent" href="#h2windowsize" class="permalink">&para;</a></h2>
984 <table class="directive">
985 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Taille maximale des paquets de données pour les transmissions client
986         vers serveur.</td></tr>
987 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>H2WindowSize <em>bytes</em></code></td></tr>
988 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>H2WindowSize 65535</code></td></tr>
989 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel</td></tr>
990 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
991 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_http2</td></tr>
992 </table>
993             <p>
994                 Cette directive permet de définir la taille maximale des paquets
995                 de données envoyés par le client au serveur, et
996                 limite la quantité de données que le serveur doit mettre en
997                 tampon. Le client arrêtera d'envoyer des données sur un flux
998                 lorsque cette limite sera atteinte jusqu'à ce que le serveur
999                 indique qu'il dispose d'un espace suffisant (car il aura traité
1000                 une partie des données).
1001             </p><p>
1002                 Cette limite n'affecte que les corps de requêtes, non les
1003                 métadonnées comme les en-têtes. Par contre, elle n'affecte pas
1004                 les corps de réponses car la taille maximale de ces derniers est
1005                 gérée au niveau des clients.
1006             </p>
1007             <div class="example"><h3>Exemple</h3><pre class="prettyprint lang-config">H2WindowSize 128000</pre>
1008 </div>
1009         
1010 </div>
1011 </div>
1012 <div class="bottomlang">
1013 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_http2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1014 <a href="../fr/mod/mod_http2.html" title="Français">&nbsp;fr&nbsp;</a></p>
1015 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
1016 <script type="text/javascript"><!--//--><![CDATA[//><!--
1017 var comments_shortname = 'httpd';
1018 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_http2.html';
1019 (function(w, d) {
1020     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
1021         d.write('<div id="comments_thread"><\/div>');
1022         var s = d.createElement('script');
1023         s.type = 'text/javascript';
1024         s.async = true;
1025         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
1026         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
1027     }
1028     else {
1029         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
1030     }
1031 })(window, document);
1032 //--><!]]></script></div><div id="footer">
1033 <p class="apache">Copyright 2019 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
1034 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
1035 if (typeof(prettyPrint) !== 'undefined') {
1036     prettyPrint();
1037 }
1038 //--><!]]></script>
1039 </body></html>