From 92d315b8d6b8cc8dda2fb64bb23e7f917f08c57f Mon Sep 17 00:00:00 2001 From: Lucien Gentis Date: Thu, 5 Jul 2018 15:26:06 +0000 Subject: [PATCH] XML updates. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1835146 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/expr.xml.fr | 19 +++--- docs/manual/howto/http2.xml.fr | 105 ++++++++++++++++++++++++------- docs/manual/mod/core.xml.fr | 2 +- docs/manual/mod/mod_proxy.xml.fr | 33 +++++++--- 4 files changed, 116 insertions(+), 43 deletions(-) diff --git a/docs/manual/expr.xml.fr b/docs/manual/expr.xml.fr index 3960022ead..5b670cc0b8 100644 --- a/docs/manual/expr.xml.fr +++ b/docs/manual/expr.xml.fr @@ -1,7 +1,7 @@ - + @@ -240,8 +240,7 @@ listfunction ::= listfuncname "(" word ")" Le nom d'hôte de l'hôte distant REMOTE_USER Le nom de l'utilisateur authentifié, s'il existe (non - disponible à l'intérieur d'un bloc <If - >) + disponible à l'intérieur d'un bloc <If>) REMOTE_IDENT Le nom de l'utilisateur défini par mod_ident SERVER_NAME @@ -265,8 +264,7 @@ listfunction ::= listfuncname "(" word ")" "basic") CONTENT_TYPE Le type de contenu de la réponse (non - disponible à l'intérieur d'un bloc <If - >) + disponible à l'intérieur d'un bloc <If>) HANDLER Le nom du gestionnaire qui a généré la réponse @@ -281,8 +279,7 @@ listfunction ::= listfuncname "(" word ")" "off" dans le cas contraire REQUEST_STATUS Le code d'erreur HTTP de la requête (non - disponible à l'intérieur d'un bloc <If - >) + disponible à l'intérieur d'un bloc <If>) REQUEST_LOG_ID L'identifiant du message d'erreur associé à la requête (voir la directive (" word ")" Identique à req, mais aucun nom d'en-tête n'est ajouté à l'en-tête Vary resp - Lit l'en-tête de réponse HTTP + Lit l'en-tête de réponse HTTP (La plupart des en-têtes de la réponse + ne seront pas encore définis pendant le traitement de la directive + <If>) reqenv Recherche une variable d'environnement de requête (on - peut aussi utiliser le raccourci v).ordonnancement + peut aussi utiliser le raccourci v). + + ordonnancement osenv Recherche une variable d'environnement du système d'exploitation diff --git a/docs/manual/howto/http2.xml.fr b/docs/manual/howto/http2.xml.fr index 25925d3105..37d9c0d37c 100644 --- a/docs/manual/howto/http2.xml.fr +++ b/docs/manual/howto/http2.xml.fr @@ -1,7 +1,7 @@ - + @@ -29,12 +29,12 @@

Ce document est le guide de l'utilisateur de l'implémentation de HTTP/2 - dans Apache httpd. Cette fonctionnalité en est au stade de - production, et les interfaces et directives devraient - maintenant se stabiliser. + dans Apache httpd. Cette fonctionnalité en est au stade + de production, et les interfaces et directives devraient donc être + dorénavant relativement stables.

- mod_http2 + mod_http2
Le protocole HTTP/2 @@ -96,7 +96,7 @@
HTTP/2 dans Apache httpd

Le protocole HTTP/2 est implémenté dans Apache httpd via un module - propre, pertinemment nommé mod_http2. Ce + propre, pertinemment nommé mod_http2. Ce module implémente toutes les fonctionnalités décrites par la RFC 7540 et supporte les connexions en texte pur (http:), ou sécurisées (https:). La variante texte pur se nomme 'h2c', et la variante sécurisée @@ -109,9 +109,9 @@

Compilation de httpd avec le support de HTTP/2 -

mod_http2 se base sur la bibliothèque +

mod_http2 se base sur la bibliothèque de nghttp2 pour son implémentation. Pour - pouvoir compiler mod_http2, libnghttp2 version + pouvoir compiler mod_http2, libnghttp2 version 1.2.1. ou supérieure doit être installée dans votre système.

Pour déclencher la compilation de mod_http2, vous devez ajouter l'argument '--enable-http2' au script @@ -124,7 +124,7 @@ préféreront lier statiquement nghttp2 à ce module. Pour ce faire, utilisez l'argument --enable-nghttp2-staticlib-deps. Cette méthode est pratiquement la même que celle utilisée pour lier - statiquement openssl à mod_ssl.

+ statiquement openssl à mod_ssl.

En parlant de SSL, vous devez savoir que la plupart des navigateurs ne communiqueront en HTTP/2 que sur des URLs sécurisées de type https: ; votre serveur doit donc supporter SSL. Mais de plus, @@ -137,7 +137,7 @@ Configuration de base

Maintenant que vous disposez d'un binaire httpd compilé avec le - module mod_http2, l'activation de ce dernier nécessite un + module mod_http2, l'activation de ce dernier nécessite un minimum de configuration supplémentaire. En premier lieu, comme pour tout module Apache, vous devez le charger :

@@ -172,7 +172,7 @@ Protocols http/1.1 Utilisez une chaîne d'algorithmes de chiffrement forte

La directive SSLCipherSuite doit être définie avec une chaîne d'algorithmes de chiffrement TLS forte. Même si - la version actuelle de mod_http2 n'impose pas d'algorithmes de chiffrement + la version actuelle de mod_http2 n'impose pas d'algorithmes de chiffrement particuliers, la plupart des clients le font. Faire pointer un navigateur vers un serveur où h2 est activé avec une chaîne d'algorithmes de chiffrement inappropriée entraînera un rejet et une retrogradation vers @@ -209,11 +209,12 @@ ProtocolsHonorOrder Off

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.

-

Une dernière chose : les protocoles que vous définissez ne sont pas vérifiés - quant à leurs validité ou orthographe. Vous pouvez très bien définir des - protocoles qui n'existent pas, et il n'est donc pas nécessaire de filtrer - les Protocoles avec des vérifications de type - IfModule.

+

Une dernière chose : les protocoles que vous définissez ne sont pas + vérifiés quant à leurs validité ou orthographe. Vous pouvez très bien + définir des protocoles qui n'existent pas, et il n'est donc pas nécessaire + de filtrer le contenu de la directive Protocols avec des vérifications de type + IfModule.

Pour des conseils plus avancés à propos de la configuration, voir la Documentation de mod_http2, et en particulier la section à propos de la Configuration du MPM

Tous les modules multiprocessus (MPM) fournis avec httpd supportent - HTTP/2. Cependant, si vous utilisez le MPM prefork, vous allez + HTTP/2. Cependant, si vous utilisez le MPM prefork, vous allez faire face à de sévères restrictions.

-

Avec le MPM prefork, mod_http2 ne traitera +

Avec le MPM prefork, mod_http2 ne traitera qu'une requête à la fois par connexion alors que les clients tels que les navigateurs internet envoient de nombreuses requêtes au même moment. Si l'une d'entre elles est longue à traiter (ou implique une longue interrogation), les autres requêtes seront mises en attente.

-

Par défaut, mod_http2 ne passe pas outre cette limitation pour - la simple et bonne raison que le MPM prefork n'est aujourd'hui +

Par défaut, mod_http2 ne passe pas outre cette limitation pour + la simple et bonne raison que le MPM prefork n'est aujourd'hui choisi que si vous exécutez des moteurs de traitement qui ne sont pas préparés pour le multithreading (par exemple qui se crashent lorsque plusieurs requêtes arrivent).

Si votre plateforme et votre installation de httpd le supportent, la meilleur solution consiste actuellement à utiliser le MPM - event. + event.

Si vous n'avez pas d'autre choix que d'utiliser le MPM - prefork, mais souhaitez tout de même traiter plusieurs requêtes + prefork, mais souhaitez tout de même traiter plusieurs requêtes simultanément, vous pouvez jouer avec la directive H2MinWorkers, sans garantie que cela fonctionne.

@@ -325,7 +326,7 @@ ProtocolsHonorOrder Off meilleur usage de cette fonctionnalité de HTTP/2 et tout le monde en est encore au stade de l'expérimentation. À ce titre, voici des conseils pour procéder vous-même à ces expérimentations :

-

mod_http2 inspecte l'en-tête de la réponse et recherche les +

mod_http2 inspecte l'en-tête de la réponse et recherche les en-têtes Link sous un certain format :

Link </xxx.css>;rel=preload, </xxx.js>; rel=preload @@ -361,8 +362,64 @@ H2Push Off un stade très expérimental.

L' en-tête Accept-Push-Policy est un autre dispositif expérimental - implémenté dans mod_http2 ; il permet au client de définir pour + implémenté dans mod_http2 ; il permet au client de définir pour chaque requête quels genres de PUSHes il accepte.

+ + +

+ 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 + sujet sur internet qui en expliquent les avantages et inconvénients et + comment les particularités des clients et du réseau en influencent le + fonctionnement. Par exemple, le seul fait que le serveur PUSHes une + ressource n'implique pas forcément que le navigateur l'utilisera.

+

Ce qui influence le plus la réponse PUSHed, c'est la requête qui a été + simulée. En effet, l'URL de la requête pour un PUSH est fournie par + l'application, mais d'où viennent les en-têtes ? Par exemple, La requête + PUSH requiert-elle un en-tête accept-language et si oui, quelle + sera sa valeur ?

+

httpd va consulter la requête originale (celle qui a déclenché le PUSH) + et copier les en-têtes suivants vers la requête PUSH : + user-agent, accept, accept-encoding, + accept-language et cache-control.

+

Tous les autres en-têtes sont ignorés. Les cookies eux non plus ne seront + pas copiés. PUSHer des ressources qui requièrent la présence d'un cookie ne + fonctionnera pas. Ceci peut être sujet à débat, mais tant que ce ne sera pas + clairement discuté avec les navigateurs, restons prudents et évitons + d'exposer les cookies là où ils ne sont pas censés être visibles.

+
+ Suggestions précoces +

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 RFC 8297.

+

Pour utiliser cette fonctionnalité, vous devez l'activer explicitement + sur le serveur via :

+ +H2EarlyHints on + +

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 + H2PushResource pour déclencher les + suggestions précoces et les PUSHes de ressources :

+ +<Location /xxx.html> + H2PushResource /xxx.css + H2PushResource /xxx.js +</Location> + +

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 + moment où les premiers en-têtes de réponse auront été déterminés.

+

Si H2Push est activé, ceci + déclenchera aussi le PUSH juste après la réponse 103. Mais si H2Push n'est pas activé, la réponse 103 sera + quand-même envoyée au client.

+
+ diff --git a/docs/manual/mod/core.xml.fr b/docs/manual/mod/core.xml.fr index 593a640c29..cdba36b08c 100644 --- a/docs/manual/mod/core.xml.fr +++ b/docs/manual/mod/core.xml.fr @@ -1,7 +1,7 @@ - + diff --git a/docs/manual/mod/mod_proxy.xml.fr b/docs/manual/mod/mod_proxy.xml.fr index 4a6fd9db03..d1c91f11e0 100644 --- a/docs/manual/mod/mod_proxy.xml.fr +++ b/docs/manual/mod/mod_proxy.xml.fr @@ -1,7 +1,7 @@ - + @@ -912,7 +912,8 @@ charge charge des mandataires et aux membres des groupes de répartition de charge ProxySet url clé=valeur [clé=valeur ...] -directory +server configvirtual host +directory ProxySet n'est disponible que depuis la version 2.2 du serveur HTTP Apache. @@ -1625,16 +1626,20 @@ ProxyPass "/" "balancer://hotcluster/" [P].

Le mot-clé optionnel interpolate, en combinaison avec la directive - ProxyPassInterpolateEnv, permet à ProxyPass + ProxyPassInterpolateEnv, permet à ProxyPass d'interpoler les variables d'environnement à l'aide de la syntaxe ${VARNAME}. Notez que de nombreuses variables d'environnement standard dérivées de CGI n'existeront pas lorsque l'interpolation se produit ; vous devrez alors encore avoir avoir recours à mod_rewrite pour des règles - complexes. Notez aussi que l'interpolation n'est pas supportée dans - la partie protocole d'une URL. La détermination dynamique du - protocole peut être effectuée à l'aide de - mod_rewrite comme dans l'exemple suivant :

+ complexes. Notez aussi que l'interpolation n'est supportée dans + la partie protocole/hostname/port d'une URL que pour les variables qui sont + disponibles au moment où la directive est interprétée (comme pour la + directive Define). La détermination + dynamique de ces champs peut être effectuée à l'aide de + mod_rewrite, et l'exemple suivant décrit comment utiliser + mod_rewrite pour définir dynamiquement le protocole à http + ou https :

RewriteEngine On @@ -2309,8 +2314,18 @@ les configurations de mandataires inverses de configuration par la valeur de la variable d'environnement nom_var (si l'option interpolate est spécifiée).

-

Conservez cette directive à off (pour les performances du - serveur), sauf si vous en avez réellement besoin.

+

La partie protocole/hostname/port de ProxyPass + peut contenir des variables, mais seulement celles qui sont accessibles au + moment où la directive est interprétée (similairement à la directive + Define). Pour tous les autres cas, + utilisez plutôt mod_rewrite.

+ Avertissement concernant les performances +

Laissez cette directive à off, à moins que vous n'en ayez réellemnt + besoin ! Par exemple, ajouter des variables à + ProxyPass peut entraîner l'utilisation des serveurs + d'arrière-plan de mod_proxy configurés par défaut, et ceux-ci ne permettent + pas un réglage fin comme la réutilisation des connexions, entre + autres...).

-- 2.40.0