From 9e13f91e68918b92520bd7d2a62dab4517987270 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Igor=20Gali=C4=87?=
Configuration du serveur HTTP Apache pour l'écoute sur un port et une adresse IP spécifiques.
Des directives Listen
- imbriquées provoqueront une erreur fatale qui
- empêchera le serveur de démarrer.
(48)Address already in use: make_sock: could not bind to address [::]:80
@@ -149,6 +148,25 @@
utilisé par défaut sur FreeBSD, NetBSD, et OpenBSD.
Dans la plupart des configurations, le second paramètre optionnel
+ protocol de la directive Listen
n'est pas obligatoire. S'il
+ n'est pas spécifié, les protocoles par défaut
+ sont https
pour le port 443, et http
pour
+ tous les autres ports. Le protocole sert à déterminer quel module
+ doit traiter une requête, et à appliquer les optimisations
+ spécifiques au protocole via la directive AcceptFilter
.
Vous ne devez définir le protocole que si vous travaillez avec
+ des ports non standards. Par exemple, pour travailler en
+ https
sur le port 8443 :
+ Listen 192.170.2.1:8443 https
+
# Cet exemple de configuration est invalide, ne l'utilisez pas comme base
# de configuration
- <VirtualHost www.abc.dom>
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
+ <VirtualHost www.example.dom>
+ ServerAdmin webgirl@example.dom
+ DocumentRoot /www/example
</VirtualHost>
ServerName
, et au moins une adresse IP à
laquelle le serveur va se rattacher et répondre. L'exemple ci-dessus
ne comporte pas d'adresse IP, si bien que httpd devra utiliser le
- DNS pour trouver l'adresse IP de www.abc.dom
. Si pour
+ DNS pour trouver l'adresse IP de www.example.dom
. Si pour
une raison quelconque, le DNS n'est pas disponible au moment où
votre serveur interprète son fichier de configuration, ce serveur
virtuel ne sera pas pris en compte dans la
configuration. Il sera incapable de
- répondre à toute requête pour ce serveur virtuel (avec les versions
- de httpd antérieures à 1.2, le serveur ne démarrera tout simplement
- pas).
+ répondre à toute requête pour ce serveur virtuel.
- Supposons que l'adresse de www.abc.dom
soit
+
Supposons que l'adresse de www.example.dom
soit
192.0.2.1, et examinons cet extrait de configuration :
# Cet exemple de configuration est invalide, ne l'utilisez pas comme base
# de configuration
<VirtualHost 192.0.2.1>
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
+ ServerAdmin webgirl@example.dom
+ DocumentRoot /www/example
</VirtualHost>
Voici un extrait de configuration qui permet d'éviter ces deux types de problèmes :
<VirtualHost 192.0.2.1>
- ServerName www.abc.dom
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
+ ServerName www.example.dom
+ ServerAdmin webgirl@example.dom
+ DocumentRoot /www/example
</VirtualHost>
Il existe (au moins) deux formes possibles de déni de service. Si
- vous utilisez une version de httpd antérieure à 1.2, votre serveur
- ne démarrera pas si une des deux recherches DNS mentionnées
- ci-dessus échoue pour au moins un de vos serveurs virtuels. Dans
- certains cas, cette recherche DNS ne sera même pas sous votre
- contrôle ; par exemple, si abc.dom
est un de vos
- clients et s'il gère son propre DNS, il peut empêcher votre
- serveur (pre-1.2) de démarrer, simplement en supprimant
- l'enregistrement www.abc.dom
.
La deuxième forme de déni de service est beaucoup plus subtile. - Examinons cet extrait de configuration :
+Considérons cet extrait de configuration :
- <VirtualHost www.abc.dom>
+ <VirtualHost www.example1.dom>
- ServerAdmin webgirl@abc.dom
- DocumentRoot /www/abc
+ ServerAdmin webgirl@example1.dom
+ DocumentRoot /www/example1
</VirtualHost>
- <VirtualHost www.def.dom>
+ <VirtualHost www.example2.dom>
- ServerAdmin webguy@def.dom
- DocumentRoot /www/def
+ ServerAdmin webguy@example2.dom
+ DocumentRoot /www/example2
</VirtualHost>
Supposons que vous avez assigné 192.0.2.1 à
- www.abc.dom
et 192.0.2.2 à www.def.dom
. En
- outre, supposons que def.dom
gère son propre DNS. Avec
- cette configuration, def.dom
sera en mesure de
- détourner tout trafic destiné à abc.dom
. Pour y
+ www.example1.dom
et 192.0.2.2 à www.example2.dom
. En
+ outre, supposons que example2.dom
gère son propre DNS. Avec
+ cette configuration, example2.dom
sera en mesure de
+ détourner tout trafic destiné à example1.dom
. Pour y
parvenir, tout ce qu'ils ont à faire consiste à assigner 192.0.2.1 à
- www.def.dom
. Comme ils gèrent leur propre DNS, vous ne
+ www.example2.dom
. Comme ils gèrent leur propre DNS, vous ne
pouvez pas les empêcher de faire pointer l'enregistrement
- www.def.dom
vers l'adresse qu'ils veulent.
www.example2.dom
vers l'adresse qu'ils veulent.
Les requêtes à destination de 192.0.2.1 (y compris toutes celles
où l'utilisateur à tapé une URL de la forme
- http://www.abc.dom/quelquepart
), seront toutes servies
- par le serveur virtuel def.dom
. Une meilleur
+ http://www.example1.dom/quelquepart
), seront toutes servies
+ par le serveur virtuel example2.dom
. Une meilleur
compréhension de la raison pour laquelle ceci peut se produire
nécessite une discussion plus approfondie à propos de la manière
dont httpd associe les requêtes entrantes aux différents serveurs
@@ -208,44 +195,6 @@
<VirtualHost
_default_:*>
qui n'a aucune page à servirLa situation concernant le DNS apparaît clairement comme non - souhaitable. Bien que nous ayons fait en sorte que le - serveur puisse au moins démarrer en cas d'échec de recherche DNS, - ce n'est pas ce que nous pouvons faire de mieux. En tout état - de cause, le fait de devoir spécifier des adresses IP explicites - dans les fichiers de configuration est fortement non souhaitable - avec l'Internet d'aujourd'hui où les changements de numérotation - sont une nécessité.
- -Il est possible d'éviter les attaques par usurpation de service - décrites ci-dessus en effectuant une recherche DNS inverse sur - l'adresse IP renvoyée par la recherche DNS directe et en comparant - les deux noms -- en cas de non correspondance, le serveur virtuel - serait désactivé. Ceci nécessite cependant une configuration - correcte du DNS inverse (ce avec quoi les administrateurs sont - familiers à cause de l'utilisation courante des doubles recherches - DNS inverses par les serveurs FTP et les TCP wrappers).
- -En tout état de cause, il ne semble pas envisageable de démarrer - de manière fiable un serveur web avec serveurs virtuels losqu'une - recherche DNS a échoué, sauf si l'on utilise des adresses IP. Les - solutions partielles consistant à désactiver des portions de - configuration pourraient s'avérer pires que ne pas démarrer du tout - ; tout dépend de ce que le serveur est supposé faire.
- -Au fur et à mesure du déploiement de HTTP/1.1, et comme les
- navigateurs et les mandataires commencent à générer l'en-tête
- Host
, il devient possible d'envisager de se passer
- complètement des serveurs virtuels à base d'adresses IP. Dans ce
- cas, un serveur web n'a besoin d'aucune recherche DNS pendant
- l'interprétation de ses fichiers de configuration. Cependant, au
- mois de mars 1997, ces fonctionnalités n'ont pas été assez largement
- déployées pour être utilisées sur des serveurs web critiques.
Langues Disponibles: en | diff --git a/docs/manual/howto/cgi.html.fr b/docs/manual/howto/cgi.html.fr index 3a5c1a62d3..aed7f8364f 100644 --- a/docs/manual/howto/cgi.html.fr +++ b/docs/manual/howto/cgi.html.fr @@ -368,6 +368,16 @@
De plus, si votre programme CGI dépend d'autres variables d'environnement, vous devrez vous assurer qu'elles lui sont bien transmises par Apache.
+Ces variables sont à la disposition du programmeur CGI, et elles constituent 50% de la communication client-serveur. La liste complète des variables requises se trouve à - http://hoohoo.ncsa.uiuc.edu/cgi/env.html.
+ Common Gateway + Interface RFC.Ce programme CGI basique en Perl permet d'afficher toutes les variables d'environnement qui sont échangées. Deux programmes @@ -571,17 +582,11 @@
Il existe un grand nombre de ressources CGI sur le web. Vous - pouvez discuter de problèmes CGI avec d'autres utilisateurs dans le - groupe Usenet - comp.infosystems.www.authoring.cgi. En outre, la liste de - diffusion de la Guilde des Ecrivains HTML est une source - intarissable de réponses à vos questions. Vous en saurez plus en - vous rendant à http://www.hwg.org/lists/hwg-servers/.
- -Et bien entendu, vous devez lire la spécification CGI, qui - présente tous les détails en rapport avec les opérations des - programmes CGI. La version originale se trouve au NCSA, et - dans la RFC IETF actuelle Common Gateway + trouverez de nombreuses réponses à vos questions dans la liste HTML + Writers Guild à l'adresse + http://www.hwg.org/lists/hwg-servers/.
+ +La spécification CGI actuelle est disponible dans la Common Gateway Interface RFC.
Lorsque vous postez une question à propos d'un problème CGI que diff --git a/docs/manual/logs.html.fr b/docs/manual/logs.html.fr index 68e250bda7..1600ce573f 100644 --- a/docs/manual/logs.html.fr +++ b/docs/manual/logs.html.fr @@ -24,8 +24,6 @@ ko | tr
Pour véritablement gérer un serveur web, il est nécessaire de disposer d'un @@ -165,25 +163,25 @@
La directive LogLevel
permet
- de spécifier un niveau de sévérité de journalisation pour chaque
- module. Vous pouvez ainsi résoudre un problème propre à un module particulier
+ de spécifier un niveau de sévérité de journalisation pour chaque
+ module. Vous pouvez ainsi résoudre un problème propre à un module particulier
en augmentant son volume de journalisation sans augmenter ce volume
- pour les autres modules. Ceci est particulièrement utile lorsque
- vous voulez obtenir des détails sur le fonctionnement de modules
+ pour les autres modules. Ceci est particulièrement utile lorsque
+ vous voulez obtenir des détails sur le fonctionnement de modules
comme mod_proxy
ou mod_rewrite
.
Pour ce faire, vous devez spécifier le nom du module dans votre +
Pour ce faire, vous devez spécifier le nom du module dans votre
directive LogLevel
:
LogLevel info rewrite:trace5
Dans cet exemple, le niveau de journalisation général est défini
- à info, et à trace5
pour mod_rewrite
.
Dans cet exemple, le niveau de journalisation général est défini
+ à info, et à trace5
pour mod_rewrite
.
RewriteLog
.-
, tandis que dans le cas contraire elle sera
1
.
+ En plus de la syntaxe env=
, la directive LogFormat
supporte les
+ valeurs de journalisation conditionnelles basées sur le code de la
+ réponse HTTP :
+ LogFormat "%400,501{User-agent}i" browserlog
+ LogFormat "%!200,304,302{Referer}i" refererlog
+
Dans le premier exemple, le User-agent
sera
+ enregistré si le code d'état HTTP est 400 ou 501. Dans le cas
+ contraire, c'est un caractère "-" qui sera enregistré à la place.
+ Dans le second exemple, le Referer
sera enregistré si
+ le code d'état HTTP n'est pas 200, 204, ou 302
+ (remarquez le caractère "!" avant les codes d'état).
Bien que nous venions de montrer que la journalisation conditionnelle est souple et très puissante, cette méthode de contrôle du contenu des @@ -668,7 +681,7 @@
Modules Apparentés | Directives Apparentées |
---|---|
Modules Apparentés | Directives Apparentées |
---|---|
This directive currently only works with the prefork
- PM.
ftp:
ou nntp
:
AcceptFilter nntp none
Les noms de protocoles par défaut sont https
pour le
+ port 443 et http
pour tous les autres ports. Pour
+ spécifier un autre protocole à utiliser avec un port en écoute,
+ ajoutez l'argument protocol à la directive Listen
.
Sous FreeBSD, les valeurs par défaut sont :
AcceptFilter http httpready
@@ -180,6 +188,10 @@ sur les autres plates-formes.
anti-spyware.
Protocol
.htaccess
AllowOverride All|None|type directive
[type directive] ...
AllowOverride All
AllowOverride None à partir de la version 2.3.9, AllowOverride
+All pour les versions antérieures
Description: | Interrompt la lecture de la configuration avec un message +d'erreur personnalisé |
---|---|
Syntaxe: | Error message |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Core |
Module: | core |
Compatibilité: | à partir de la version 2.3.9 |
Si une erreur peut être détectée dans la configuration, souvent + un module manquant, cette + directive peut être utilisée pour générer un message d'erreur + personnalisé, et interrompre la lecture de la configuration.
+ +
+ # vérification du chargement de mod_include
+ <IfModule !include_module>
+ Error mod_foo nécessite mod_include. Chargez-le via LoadModule.
+ </IfModule>
+
+ # vérification de la définition de SSL ou (exclusif) NOSSL
+ <IfDefine SSL>
+ <IfDefine NOSSL>
+ Error SSL et NOSSL sont définies. Vous devez définir soit l'une,
+ soit l'autre.
+ </IfDefine>
+ </IfDefine>
+ <IfDefine !SSL>
+ <IfDefine !NOSSL>
+ Error Vous devez définir une et une seule des deux variables SSL
+ ou NOSSL.
+ </IfDefine>
+ </IfDefine>
+
syslog:facility
, où facility peut
être remplacé par un des noms habituellement documentés dans la page
- de man syslog(1).
+ de man syslog(1). Le dispositif syslog local7
est
+ global, et si il est modifié dans un serveur virtuel, le dispositif
+ final spécifié affecte l'ensemble du serveur
ErrorLog syslog:user
@@ -1573,6 +1627,27 @@ HTTP Content-Type pour les fichiers correspondants
directive est ignorée.
Description: | Répertoire dans lequel écrire les données de profiling +gmon.out. |
---|---|
Syntaxe: | GprofDir /tmp/gprof/|/tmp/gprof/% |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Core |
Module: | core |
Lorsque le serveur a été compilé avec le support du profiling
+ gprof, la directive GprofDir
permet de
+ spécifier dans quel répertoire les fichiers gmon.out
+ doivent être écrits lorsque le processus s'arrête. Si l'argument se
+ termine par un caractère pourcentage ('%'), des sous-répertoires
+ sont créés pour chaque identifiant de processus.
Cette directive ne fonctionne actuellement qu'avec le MPM
+ prefork
.
Cette directive spécifie la taille maximale autorisée pour le corps d'une requête ; la valeur de l'argument octets va - de 0 (pour une taille illimitée), à 2147483647 (2Go).
+ de 0 (pour une taille illimitée), à 2147483647 (2Go). Voir la note + ci-dessous pour la limite d'applicabilité aux requêtes mandatées.La directive LimitRequestBody
permet de
définir une limite pour la taille maximale autorisée du corps d'une
@@ -2176,6 +2252,11 @@ envoy
LimitRequestBody 102400
Pour une description détaillée de la manière dont cette
+ directive est interprétée par les requêtes mandatées, voir la
+ documentation du module mod_proxy
.
mod_negotiation
sont autorisées.mod_negotiation
sont autorisées.
+ Cette option est ignorée si elle est
+ définie en tout autre endroit qu'une section <Directory>
, car
+ mod_negotiation
a besoin de ressources réelles
+ pour effectuer ses comparaisons et ses évaluations.
SymLinksIfOwnerMatch
En l'absence de toute définition d'options, la valeur par défaut
est All
.
Description: | Protocole pour une socket d'écoute |
---|---|
Syntaxe: | Protocol protocole |
Contexte: | configuration du serveur, serveur virtuel |
Statut: | Core |
Module: | core |
Compatibilité: | Disponible depuis la version 2.1.5 d'Apache, mais +seulement depuis la version 2.3.3 sous Windows. |
Cette directive permet de spécifier le protocole utilisé pour une
+ socket d'écoute particulière. Le protocole sert à déterminer quel
+ module doit traiter une requête, et d'appliquer les optimisations
+ spécifiques au protocole via la directive
+ AcceptFilter
.
Vous ne devez définir le protocole que si vous travaillez avec
+ des ports non standards ; dans le cas général, le protocole
+ http
est associé au port 80 et le protocole
+ https
au port 443.
Par exemple, si vous travaillez avec le protocole
+ https
sur un port non standard, spécifiez le protocole
+ de manière explicite :
+ Protocol https
+
Vous pouvez aussi spécifier le protocole via la directive
+ Listen
.
AcceptFilter
Listen