From: Eric Covener
Configuration du serveur HTTP Apache pour l'écoute sur un port et une adresse IP spécifiques.
diff --git a/docs/manual/bind.xml.meta b/docs/manual/bind.xml.meta index 0973e5bdd1..63a9a951a0 100644 --- a/docs/manual/bind.xml.meta +++ b/docs/manual/bind.xml.meta @@ -9,7 +9,7 @@Ce document décrit les fichiers utilisés pour configurer le Serveur HTTP Apache.
@@ -92,6 +90,48 @@ le Serveur HTTP Apache. sont aussi ignorées. les arguments de directive sont séparés par des blancs. Si un argument contient des espaces, il doit être entouré de guillemets. +Un argument qui contient des espaces doit être entouré de guillemets
+ doubles (") ou de guillemets simples ('). Les
+ guillemets eux-mêmes ne font pas partie de l’argument.
À l’intérieur d’une chaîne entre guillemets, seules deux séquences
+ d’échappement sont reconnues : \\ produit une controblique
+ littérale et \" (ou \' si la chaîne est entourée
+ de guillemets simples) produit un guillemet littéral sans terminer la
+ chaîne. Toutes les autres séquences avec controblique sont conservées telles
+ quelles — par exemple, \n sera considéré comme une chaîne
+ littéral de deux caractères \n, pas comme une nouvelle
+ ligne.
En dehors des guillemets, les controbliques n’ont aucune signification + spéciale et sont traitées comme des caractères littéraux. La seule exception + est la controblique de continuation de ligne en fin de ligne, comme décrit + ci-avant.
+ +Notez que des chaînes entre guillemets adjacentes sans espace entre elles + ne sont pas concaténées — elles sont traitées comme des + arguments séparés. Par exemple :
+ +
+ # Il ne s’agit pas d’un seul argument, mais de DEUX :
+ Header set X-Foo "arg1""arg2"
+
Certaines directives acceptent des arguments qui contiennent des
+ sous-expressions ayant leur propre syntaxe, telles que les drapeaux de la
+ directive RewriteRule ou les
+ expression ap_expr. Dans ces cas, l’interpréteur de
+ fichier de configuration enlève tout d’abord les guillemets englobants et
+ traite les séquences avec controblique comme décrit ci-avant, puis
+ l’interpréteur propre à la directive traite le résultat. En cas de doute,
+ utiliser des guillemets simples autour d’un argument qui contient des
+ controbliques peut éviter un double traitement inattendu des séquenses
+ d’échappement.
Les directives dans les fichiers de configuration ne sont pas sensibles à la casse, mais leurs arguments le sont souvent.
diff --git a/docs/manual/configuring.xml.meta b/docs/manual/configuring.xml.meta index 28796b60e2..e719482486 100644 --- a/docs/manual/configuring.xml.meta +++ b/docs/manual/configuring.xml.meta @@ -9,7 +9,7 @@Apache HTTPD prend en charge la négociation de
diff --git a/docs/manual/content-negotiation.xml.meta b/docs/manual/content-negotiation.xml.meta
index 5ebb3ced68..d9d19c5db3 100644
--- a/docs/manual/content-negotiation.xml.meta
+++ b/docs/manual/content-negotiation.xml.meta
@@ -8,7 +8,7 @@
Available in versions after 2.0.54 When Apache issues a redirect in response to a client request,
the response includes some actual text to be displayed in case
the client can't (or doesn't) automatically follow the redirection.
@@ -479,7 +477,7 @@
Available in 2.4.59 and later This variable allows a script running in CGI-like module to supply it's
+ This variable allows a script running in CGI-like module to supply its
own Content-Length HTTP response header. It should
only be set on configuration sections that contain trusted scripts.
DirectoryIndex
or generating a directory listing with mod_autoindex,
- per-request environment variables are not inherited in the
- subrequest. Additionally,
+ per-request environment variables are not inherited in the
+ subrequest. Additionally,
SetEnvIf directives
are not separately evaluated in the subrequest due to the API phases
mod_setenvif takes action in.
@@ -437,8 +437,6 @@
suppress-error-charset
- ap_trust_cgilike_cl
Les directives des fichiers de configuration peuvent s'appliquer au serveur dans son ensemble, ou seulement à des répertoires, fichiers, hôtes, ou URLs particuliers. Ce document décrit comment utiliser les conteneurs de @@ -65,11 +63,10 @@ s'appliqueront à toutes les requêtes. Si leurs conditions ne sont p directives qu'ils contiennent seront ignorées.
Le conteneur <IfDefine>
-contient des directives qui ne seront appliquées que si un paramètre
-approprié a été défini dans la ligne de commande de httpd.
-Par exemple,
-avec la configuration suivante, toutes les requêtes seront redirigées vers
-un autre site si le serveur est démarré en utilisant la ligne de commande :
+contient des directives qui ne seront appliquées que si un paramètre approprié a
+été défini dans la ligne de commande de httpd. Par exemple,
+avec la configuration suivante, toutes les requêtes seront redirigées vers un
+autre site si le serveur est démarré en utilisant la ligne de commande :
httpd -DClosedForNow :
<IfDefine ClosedForNow> @@ -114,7 +111,7 @@ et configurations de httpd.@@ -213,16 +210,32 @@ toute requête commençant par la chaîne de caractères <
<IfDefine>,<IfModule>et<IfVersion>-peuvent inverser leur test conditionnel en le faisant précéder d'un « ! ». +peuvent inverser leur test conditionnel en le faisant précéder d'un « ! ». De plus, ces sections peuvent être imbriquées afin de définir des restrictions plus complexes.Le conteneur
-<Location>n'a pas besoin de faire référence à un élément du système de fichiers. À ce titre, l'exemple suivant montre comment faire correspondre une URL -particulière à un gestionnaire interne du serveur HTTP Apache fourni par le module +particulière à un gestionnaire interne fourni par le modulemod_status. Il n'est pas nécessaire de trouver un fichier nomméserver-statusdans le système de fichiers.<Location "/server-status"> +# Un URL vers un gestionnaire interne : +<Location "/server-status"> SetHandler server-status +</Location> + +# Un chemin d’URL vers un dorsal de mandataire inverse : +<Location "/app"> + ProxyPass "http://backend.example.com/" + ProxyPassReverse "http://backend.example.com/" +</Location> + +# Interdire l’accès à un chemin d’URL sans tenir compte de ce qui le traite : +<Location "/private"> + Require all denied </Location>+Étant donné que la section
+<Location>opère sur des URLs, et non sur des chemins du +système de fichiers, il s'agit du conteneur approprié pour la configuration du +mandataire et les points de terminaison fournis par les modules.Espace web imbriqué
Pour contrôler deux URLs imbriquées, on doit tenir compte de l'ordre @@ -468,21 +481,31 @@ sont interprétées.
évaluées mais selon l'ordre dans lequel elles apparaissent dans le fichier de configuration.
<Directory> (groupe 1 ci-dessus)
- sont traitées dans l'ordre du répertoire le plus court vers le plus long.
+ sont traitées dans l'ordre du répertoire le plus court vers le plus long
+ (sans tenir compte de leur ordre d’apparition dans le fichier de
+ configuration).
Par exemple, <Directory "/var/web/dir"> sera
traitée avant <Directory
"/var/web/dir/subdir">.<Directory> s'appliquent au même
- répertoire, elles sont traitées selon l'ordre dans lequel elles
- apparaissent dans le fichier de configuration.Include sont traitées comme si elles se
+ <Directory> s'appliquent au même répertoire, elles
+ sont traitées selon l'ordre dans lequel elles apparaissent dans le fichier
+ de configuration. La même règle s’applique lorsque plusieurs sections
+ <DirectoryMatch>,
+ <Files>, <FilesMatch>, <Location> ou <LocationMatch> ciblent à la même
+ ressource.Include sont traitées comme si elles se
trouvaient réellement dans le fichier qui les inclut à la position de la
directive
Include.<VirtualHost>
sont appliquées après les sections correspondantes situées en
dehors de la définition du serveur virtuel, ce qui permet au serveur virtuel
- de prévaloir sur la configuration du serveur global.<serveur virtuel> est sélectionné pour une requête
+ — les directives de plusieurs serveurs virtuels correspondants ne sont
+ jamais fusionnées. Voir Correspondance des
+ serveurs virtuels pour des détails à propos de la manière dont les
+ serveurs virtuels sont sélectionnés.
mod_proxy,
le conteneur <Proxy>
prend la place du conteneur <Directory> dans l'ordre de traitement.<If> est utilisée dans un fichier .htaccess, les
- directives incluses dans un répertoire parent seront fusionnées
- après les directives non-incluses dans un sous-répertoire.
+ directives incluses dans un "directory" parent seront fusionnées
+ après les directives non-incluses dans un "directory" enfant.
Utiliser la directive <Limit> au sein d’une section <Location> pour restreindre
+ la liste des méthodes HTTP autorisées peut donner des résultats
+ inattendus. Pour les méthodes non spécifiées par la directive <Limit>, la section <Location> hôte est traitée comme
+ n’imposant aucune condition d’autorisation, ce qui a effectivement pour
+ effet d’accorder l’accès et outrepasse toute éventuelle restriction
+ d’une section <Directory> qui, autrement, aurait dû s’appliquer.
+ C’est pourquoi il est préférable d’utiliser la directive <LimitExcept> ou de définir les
+ autorisations sans restriction sur les méthodes.
Cette page contient la liste des éléments actuellement disponibles de
la Documentation du serveur HTTP Apache Version
diff --git a/docs/manual/sitemap.xml.meta b/docs/manual/sitemap.xml.meta
index 4ae81b6858..741ec7f0b5 100644
--- a/docs/manual/sitemap.xml.meta
+++ b/docs/manual/sitemap.xml.meta
@@ -10,7 +10,7 @@
Ce document vise à expliquer dans le détail comment le serveur @@ -177,20 +175,39 @@ dynamiquement
À la réception d'une requête, le serveur procède comme suit pour - déterminer quel serveur virtuel utiliser :
- -Lors d'une première connexion sur une adresse/port, le serveur
- recherche toutes les directives VirtualHost qui
- possèdent la même adresse IP/port.
S'il n'y a aucune correspondance exacte pour cette adresse/port,
- la recherche s'effectue sur la valeur générique (*).
Si aucune correspondance n'est enfin trouvée, la requête sera - servie par le serveur principal.
+Le serveur détermine le serveur virtuel à utiliser pour une requête en + deux phases : une recherche basée sur l’IP lorsque la connexion est établie, + puis une recherche optionnelle à base de nom à la réception de la requête.
+ +Lorsqu’une connexion est établie, le serveur recherche l’adresse IP et le
+ port de destination dans sa liste d’adresses/ports des serveurs
+ virtuels. Cette recherche respecte un ordre de priorité strict :
| Priorité | Type de correspondance | Exemple |
|---|---|---|
| 1 | Adresse IP et port exacts | +<VirtualHost 10.0.0.1:80> |
| 2 | Adresse IP exacte, port générique | +<VirtualHost 10.0.0.1:*> |
| 3 | Adresse IP générique (*), port exact |
+ <VirtualHost *:80> |
| 4 | Adresse IP et port génériques | +<VirtualHost *:*> |
| 5 | Serveur principal | +(aucun serveur virtuel ne correspond) |
Le serveur utilise la première correspondance trouvée en suivant
+ cet ordre. Lorsqu’une correspondance est trouvée à un niveau de priorité
+ donné, aucun niveau de priorité inférieur n’est considéré — même si un
+ serveur virtuel de priorité inférieure possède un ServerName
+ qui correspond au contenu de l’en-tête Host de la requête. La
+ recherche à base de nom (Phase 2) n’intervient que lorsque deux serveurs
+ virtuels de même niveau de priorité peuvent correspondre.
S'il existe des définitions VirtualHost pour
l'adresse IP, l'étape suivante consiste à déterminer si nous avons à
@@ -200,20 +217,19 @@ dynamiquement
Si une seule section VirtualHost présente la
- meilleure correspondance avec la paire adresse IP/port, aucune
- action n'est entreprise et la requête est
- traitée par le serveur virtuel qui correspond.
Si la Phase 1 ne trouve qu’un seul serveur virtuel
+ correspondant, la requête est servie directement depuis ce dernier sans
+ effectuer d’autre recherche.
Si plusieurs sections VirtualHost présentent la
- meilleure correspondance avec la paire adresse IP/port, le terme
- "liste" dans les étapes suivantes fait référence à la liste des
- serveurs virtuels qui correspondent, selon l'ordre dans lequel ils
- apparaissent dans le fichier de configuration.
Si la phase 1 trouve plusieurs serveurs virtuels
+ correspondants de même niveau de priorité, le serveur effectue une recherche
+ à base de nom parmi ces serveurs virtuels en utilisant l’en-tête
+ Host: de la requête (ou le nom d’hôte SNI pour les connexions
+ SSL).
Si la connexion utilise SSL, si le serveur supporte l'Indication de nom de serveur, et si la négociation du client SSL inclut l'extension TLS dans le @@ -225,30 +241,42 @@ dynamiquement serveur virtuel qui détermine quel certificat le serveur va utiliser pour la connexion.
-Si la requête contient un en-tête Host:, on
- recherche dans la liste le premier serveur virtuel dont le
- ServerName ou le ServerAlias correspond,
- et c'est celui-ci qui va traiter la requête. Un en-tête
- Host: peut comporter un numéro de port mais Apache
- l'ignore systématiquement et utilise toujours le
- port sur lequel il a effectivement reçu la requête.
La recherche de serveurs virtuels correspondants s’effectue selon leur + ordre d’apparition dans le fichier de configuration :
-Le premier serveur virtuel du fichier de configuration qui
- possède l'adresse spécifiée est prioritaire et intercepte toutes les
- requêtes à destination d'un nom de serveur inconnu, ou toute requête
- sans en-tête Host: (comme les requêtes HTTP/1.0).
ServerName et ServerAlias de chaque serveur virtuel sont
+ comparés au nom d’hôte de la requête. La première correspondance est
+ retenue.ServerName ou ServerAlias ne
+ correspond, c’est le premier serveur virtuel de la liste qui sera
+ choisi. Il s’agit du serveur virtuel à base de nom par défaut pour
+ cette combinaison adresse/port.Un champ d’en-tête Host: peut contenir un numéro de port,
+ mais httpd l’ignore toujours et effectue sa recherche de correspondance avec
+ le port réel auquel le client a envoyé sa requête.
Si la requête ne possède pas d’en-tête Host: (comme les
+ requêtes HTTP/1.0), le premier serveur virtuel qui correspond est choisi.
+ Mais si une directive ServerPath est
+ configurée pour un des serveurs virtuels correspondants et que l’URL de la
+ requête correspond à ce chemin, la requête sera servie depuis ce serveur
+ virtuel. Il s’agit d’un mécanisme patrimonial pour les clients HTTP/1.0 ;
+ voir l’exemple avec ServerPath pour
+ les détails.
La recherche par adresse IP décrite ci-avant n'est faite - qu'une fois pour chaque session TCP/IP, alors que la - recherche par nom est réalisée pour chaque requête au - cours d'une connexion persistante (KeepAlive). En d'autres termes, - il est possible pour un client de faire des requêtes sur - différents serveurs virtuels par nom, au cours d'une unique - connexion persistante.
+La recherche par adresse IP (Phase 1) n'est effectuée qu'une + fois pour une session TCP/IP particulière, alors que la recherche par + nom (Phase 2) est effectuée pour chaque requête au cours d'une + connexion persistante (KeepAlive). En d'autres termes, il est possible pour + un client de faire des requêtes pour des pages sur différents serveurs + virtuels par nom, au cours d'une unique connexion persistante.
@@ -267,20 +295,19 @@ dynamiquement*" comme adresse pour tous
+ les serveurs virtuels, et la sélection du serveur virtuel en fonction du
+ nom s'appliquera alors à tous les serveurs virtuels définis.ServerName et
- ServerAlias ne sont jamais
- réalisées pour les serveurs virtuels par IP.ServerAlias ne sont jamais réalisées pour les serveurs
+ virtuels par IP (celles pour lesquelles il n’y a qu’un seul serveur
+ virtuel pour cette adresse IP/port).