From: Lucien Gentis
Beaucoup a déjà été écrit à propos de HTTP/2 et de son fonctionnement. La
- documentation la plus officielle est bien entendu sa
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 ce - que ce mécanisme est censé faire, et seulement ensuite de lire sa RFC - pour comprendre comment il fonctionne. http2 explained de Daniel Stenberg - (l'auteur de curl) - est un bien meilleur document pour démarrer l'étude de HTTP/2. En outre, de - nouveaux langages s'ajoutent régulièrement à sa liste de traductions - disponibles !
-Si vous n'avez pas envie de le lire parce que vous le trouvez trop long, - voici certains pièges à éviter et nouveaux termes à connaître avant de lire - ce document :
+ HTTP/1, vous connaissez déjà 95% deHTTP/2. + +Le protocole est définii dans la
En bref, il y a quelques nouveaux termes et pièges à éviter que vous + devez garder à lâesprit lors de la lecture de ce document :
+Le protocole HTTP/2 est implémenté dans Apache httpd via un module
propre, pertinemment nommé h2c', et la variante sécurisée
'h2'. h2c peut être en mode direct ou
Upgrade: via une requête initiale en HTTP/1.
Server Push est une nouvelle fonctionnalité offerte - aux développeurs web par HTTP/2. La section correspondante de ce document - vous indiquera comment votre application peut en tirer parti.
+Server Push était une nouvelle fonctionnalité offerte + aux développeurs web par HTTP/2, mais elle est maintenant obsolète. Voir la + section EarlyHints pour lâalternative + recommandée.
Maintenant que vous disposez d'un binaire httpd compilé avec le
module
La seconde directive que vous devez ajouter à votre fichier de configuration est
-Ceci permet de définir h2, la variante sécurisée, comme le protocole préféré pour les connexions à votre serveur. Si vous souhaitez que toutes les variantes soient disponibles, utilisez la directive suivante :
-Selon l'endroit où vous placez cette directive, elle affectera l'ensemble - de votre serveur, ou seulement un ou plusieurs serveurs virtuels. Vous +
Selon l'endroit où vous placez cette directive, elle affectera toute les + connexions, ou seulement celles vers un serveur virtuel spécifique. Vous pouvez aussi l'imbriquer comme dans l'exemple suivant :
-Seules les connexions en HTTP/1 seront alors permises, sauf pour le serveur
- virtuel test.example.org qui acceptera aussi les connexions SSL
- en HTTP/2.
Seules les connexions en HTTP/1 seront alors permises, sauf pour les
+ connexions SSL vers test.example.org qui propose aussi HTTP/2.
La directive
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, c'est le plus à gauche qui sera sélectionné. Dans
-le protocole préféré sera HTTP/1 et il sera toujours sélectionné sauf si un client ne supporte que h2. Comme nous souhaitons communiquer en HTTP/2 avec les clients qui le supportent, la meilleure définition de la directive est
-Toujours à propos de l'ordre des protocoles, le client a lui aussi ses propres préférences en la matière. à ce titre, si vous le souhaitez, vous pouvez configurer votre serveur pour qu'il sélectionne non plus son protocole préféré, mais au contraire le protocole préféré du client :
-Avec cette directive, l'ordre des protocoles que vous avez défini devient caduque et seul l'ordre défini par le client sera pris en compte.
@@ -248,11 +262,10 @@ ProtocolsHonorOrder OffLa plupart des navigateurs modernes supportent HTTP/2, mais seulement sur - des connexions SSL : Firefox v43, Chrome v45, Safari v9, iOS Safari v9, - Opera v35, Chrome pour Android v49 et - Internet Explorer v11 sous Windows10 (selon cette source).
+Tous les navigateurs modernes prennent en charge HTTP/2 sur + des connexions TLS (source). La + prise en charge est devenue universelle sur les navigateurs principaux à peu + près en 2015.
D'autres clients et serveurs sont listés dans le wiki des implémentations ; entre autres des implémentations pour c, c++, common @@ -268,14 +281,19 @@ ProtocolsHonorOrder Off
Le premier d'entre eux est bien entendu curl. Assurez-vous au préalable que votre
version supporte HTTP/2 en vérifiant ses Fonctionnalités :
curl de Homebrew inclut par défaut la prise en charge de
+ HTTP/2. Installez le avec la commande brew install curl et
+ suivez les instructions affichées pour le mettre en tête du PATH de votre
+ système.
Pour une inspection en profondeur : wireshark.
Le paquet nghttp2 inclut aussi des @@ -290,15 +308,22 @@ ProtocolsHonorOrder Off
Chrome fournit des journaux détaillés des connexions HTTP/2 via la page special net-internals page. Il y - a aussi cette extension intéressante pour Chrome + a aussi cette extension intéressante pour Chrome et Firefox + href="https://addons.mozilla.org/en-us/firefox/addon/http2-indicator/">Firefox qui permet d'indiquer que votre navigateur utilise HTTP/2.
Server Push est obsolète dans la
Le protocole HTTP/2 permet au serveur de proposer (PUSH) des réponses pour lesquelles le client n'a rien demandé. La communication autour de ces réponses est du style : "voici une requête que vous n'avez jamais @@ -323,29 +348,37 @@ ProtocolsHonorOrder Off procéder vous-même à ces expérimentations :
Link sous un certain format :
Si la connexion supporte PUSH, ces deux ressources seront envoyées au client. En tant que développeur web vous pouvez définir ces en-têtes soit directement au niveau de la réponse de votre application, soit en configurant votre serveur via
-Si vous souhaitez utiliser des liens preload sans déclencher
de PUSH, vous pouvez utiliser le paramètre nopush comme suit :
Vous pouvez aussi désactiver les PUSHes pour l'ensemble de votre serveur via la directive
-Ã savoir aussi :
Le module maintient un journal des ressources ayant fait l'objet d'un PUSH pour chaque connexion (en général des condensés hash des URLs), et @@ -353,14 +386,13 @@ H2Push Off lorsque la connexion est fermée, le journal de ses PUSHes est supprimé.
Certains développeurs planchent sur la manière de permettre au client 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.
+ d'éviter les PUSHes pour ces dernières, mais aucune norme nâa émergé avant + que push ne devienne obsolète.L'
- en-tête Accept-Push-Policy est un autre dispositif expérimental
+ en-tête Accept-Push-Policy est un dispositif expérimental
implémenté dans
La fonctionnalité PUSH n'apportera pas toujours le gain de performances dans l'obtention de réponses aux requêtes. Vous trouverez plusieurs études sur ce @@ -385,27 +417,31 @@ H2Push Off
A l'instar des ressources PUSHées, une autre méthode consiste à envoyer
des en-têtes Link 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
Pour utiliser cette fonctionnalité, vous devez l'activer explicitement sur le serveur via :
-Elle n'est en effet pas activée par défaut car certains navigateurs anciens perdent pied avec de telles réponses.
Une fois cette fonctionnalité activée, vous pouvez utiliser la directive
Le serveur enverra alors au client une réponse "103 Early
Hints" dès qu'il commencera à traiter la requête. Selon
votre application web, cet envoi peut intervenir beaucoup plus tôt que le
diff --git a/docs/manual/howto/public_html.xml.fr b/docs/manual/howto/public_html.xml.fr
index 40bdcccc41..b32d9db513 100644
--- a/docs/manual/howto/public_html.xml.fr
+++ b/docs/manual/howto/public_html.xml.fr
@@ -1,7 +1,7 @@
-
+
@@ -35,19 +35,28 @@ visiteurs de l'URL http://example.com/~nom_utilisateur/
recevront un contenu situé dans le répertoire home de l'utilisateur
"nom_utilisateur", et dans le sous-répertoire spécifié par
la directive
Notez que par défaut, l'accès à ces répertoires n'est +
Par défaut, l'accès à ces répertoires n'est
pas permis. Vous pouvez en permettre l'accès à l'aide
de la directive
dans le fichier de configuration par défaut
conf/httpd.conf, et en adaptant le
fichier httpd-userdir.conf selon vos besoins, ou en
incluant les directives appropriées dans une section
l'URL http://example.com/~rbowen/fichier.html
correspondra au chemin fichier
@@ -89,8 +102,11 @@ avec le système de fichiers
sera construit en utilisant ce chemin, suivi du nom de l'utilisateur
considéré. Par exemple, avec cette configuration :
l'URL http://example.com/~rbowen/fichier.html
correspondra au chemin fichier
/var/html/rbowen/fichier.html
l'URL http://example.com/~rbowen/fichier.html
correspondra au chemin fichier
@@ -108,13 +128,17 @@ avec le système de fichiers
On peut aussi définir plusieurs répertoires ou chemins de répertoires.
-Avec l'URL http://example.com/~rbowen/fichier.html,
- Apache va rechercher ~rbowen. S'il ne le trouve pas,
- Apache va rechercher rbowen dans
- /var/html. S'il le trouve, l'URL ci-dessus correspondra
- au chemin fichier /var/html/rbowen/file.html
Les arguments sont pris en compte selon lâordre dans lequel ils
+ apparaissent. Pour lâURL http://example.com/~rbowen/file.html,
+ httpd recherchera dâabord ~rbowen. Si ce dernier nâest pas
+ trouvé, httpd cherchera rbowen dans /var/html. Le
+ fichier sera servi depuis le premier emplacement trouvé.
L'exemple ci-dessus va rediriger une requête pour
http://example.com/~bob/abc.html vers
@@ -139,7 +167,11 @@ avec le système de fichiers
vous pouvez définir quels utilisateurs sont autorisés à utiliser
cette fonctionnalité :
La configuration ci-dessus va autoriser l'utilisation de la fonctionnalité pour tous les utilisateurs, à l'exception de ceux @@ -148,11 +180,12 @@ avec le système de fichiers utilisateurs sauf certains d'entre eux en utilisant une configuration du style :
-Vous trouverez d'autres exemples dans la documentation de
Avec la configuration ci-dessus, et en supposant que
UserDir est défini à public_html, un
programme CGI exemple.cgi pourra être chargé depuis ce