Ces paramètres de configuration contrôlent les fonctionnalités premières d'Apache, et sont toujours disponibles.
AccceptFilter on
AcceptFilter
contrôle une optimisation
spécifique à BSD. Elle est compilée par
défaut et activée par défaut si votre
système l'implémente (option SO_ACCCEPTFILTER de
setsocketopt()). A l'heure actuelle, seul FreeBSD
l'implémente.
Se référer à la section concernant les filtres dans la documentation sur la performance pour de plus amples informations.
L'option de compilation AP_ACCEPTFILTER_OFF
peut être utilisée pour changer le défaut
à 'off'. httpd -V
et httpd -L
affichent dorénavant les valeurs par défauts au
moment de la compilation, et si oui ou non SO_ACCEPTFILTER a
été défini pour cette compilation.
AccessConfig conf/access.conf
Le serveur lit dans ce fichier des directives supplémentaires après avoir ouvert le fichier ResourceConfig. nomfichier est exprimé relativement à ServerRoot. Cette fonctionnalité peut être désactivée en écrivant :
AccessConfig /dev/null
ou sur les serverus Win32
AccessConfig nul
Historiquement, ce fichier ne contenait que des sections <Directory>; en fait, il pourra maintenant contenir toute directive "serveur" autorisée dans le contexte de la configuration serveur.
Une nouveauté de la version d'Apache 1.3.13 est la
possibilité qu'AccessConfig
représente un répertoire plutot qu'un fichier.
Apache lira tous les fichiers de ce répertoire ainsi que
tous les sous-répertoires et analysera tous ces fichiers
de configuration.
Voir également ResourceConfig.
AccessFileName .htaccess
Lorsqu'il retourne un document au client, le serveur cherche le premier fichier de contrôle d'accès existant dans cette liste dans chacun des répertoires inscrit dans le chemin d'accès menant au document, pour déterminer si l'accès est autorisé dan chacun de ces répertoires. Par exemple:
AccessFileName .acl
Avant de servir le document
/usr/local/web/index.html
, le serveur lira les
fichiers /.acl
, /usr/.acl
,
/usr/local/.acl
et
/usr/local/web/.acl
à la recherche de
directives, sauf si celles-ci ont été
désactivées par l'écriture
<Directory /> AllowOverride None
</Directory>
Voir également : AllowOverride
AddDefaultCharset Off
Cette directive spécifie le nom de la table de
caractères qui sera ajouté à toutes les
réponses qui n'ont aucun paramètre sur le type de
contenu dans l'en-tête HTTP. Elle remplace la table de
caractère spécifié dans le corps du
document par l'utilisation du marqueur META
. La
mise de AddDefaultCharset Off
désactive
cette fonctionnalité. AddDefaultCharset On
active la table de caractère iso-8859-1
par
défaut d'Apache. Vous pouvez également
définir une autre table de caractères à
employer. Par exemple AddDefaultCharset utf-8
.
Le serveur peut intégrer des modules compilés qui ne sont pas mis en service. Cette directive peut être utilisée pour activer ou désactiver ces modules. Le serveur est installé avec une liste pré-configurée de modules actifs cette liste peut être effacée par la directive ClearModuleList.
AllowOverride All All
Lorsque le serveur trouve un fichier .htaccess (comme spécifié par AccessFileName) il doit savoir quelles directives declarées dans ce fichier peuvent outrepasser les droits fixés par des directives précédentes.
Si la directive est définie à
None
, les fichier .htaccess sont ignorés.
Dans ce cas, le serveur n'essaie même pas de lire les
fichiers .htaccess.
Si la directive est définie à All
toutes les directives possibles dans le contexte .htacces sont
autorisées dans les fichiers .htaccess.
Les types de directives peuvent être parmi ces groupes de directives :
Voir également : AccessFileName
Cette directive indique le nom du schéma d'autorisation pour un répertoire. Ce schéma sera donné au client de sorte que l'utilisateur sache quel nom et quel mot de passe envoyer. AuthName prend un seul argument. Si le schéma d'autorisation contient des espaces, il doit être entouré de guillemets. Pour fonctionner correctement, elle devra être accompagnée des directives AuthType et require, et de directives telles que AuthUserFile et AuthGroupFile.
Cette directive selectionne le type d'authentification pour
un répertoire. Seul les types Basic
et
Digest
sont actuellement
implémentés.
Pour fonctionner correctement, elle devra être
accompagnée des directives AuthName et require, et de directives telles que AuthUserFile et AuthGroupFile.
BindAddress *
Un serveur http sous Unix® peut soit écouter toutes les adresses IP de la machine sur lequel il est exécuté, ou uniquement une de ces adresses. Si l'argument de cette directive est *, le serveur traitera les connections sur toutes les adresses IP. Sinon, le serveur peut écouter à partir d'une adresse IP spécifique ou d'un nom de domaine Internet.
Une et une seule directive BindAddress peut être utilisée. Pour contrôler plus finement quels ports et adresses Apache écoute, utilisez la directive Listen au lieu de BindAddress.
BindAddress peut être utilisée comme alternative à l'implantation d'hôtes virtuels utilisant des serveurs multiples indépendants, soit au lieu d'utiliser les sections <VirtualHost>.
Voir aussi: Apache et DNS
Voir aussi: Configurer
les ports et adresses utilisés par Apache
La directive BS2000Account
n'est disponible que
pour les machines BS2000. Elle doit être employée
pour définir le numéro de compte pour
l'utilisateur non privilégié (qui est
défini par la directive User ). Ceci
est requis par le sous système POSIX du BS2000 afin de
changer l'environnement d'exécution sosu jacent du BS200
en effectuant une sous connexion, et éviter ainsi que
des scripts CGI puissent accéder à des ressources
accessible à l'utilisateur privilégié
utilisé pour lancer le serveur,
généralement SYSROOT.
Seulement une directive BS2000Account
peut
être utilisée.
Voir également: Portage EBCDIC d'Apache
Le serveur dispose à l'installation d'une liste pré-configurée de modules actifs. Cette directive efface cette liste. Il est supposé que cette liste sera reconstruite à partir de directives AddModule.
ContentDigest off
Compatibilité : ContentDigest n'est disponible qu'à partir de la version 1.1 d'Apache
Cette directive active la génération
d'en-têtes Content-MD5
conformes aux RFC1864
et RFC2068.
MD5 est un algorithme permettant d'extraire un "résumé" à partir d'un bloc de données de longueur arbitraire, avec un degré de confiance suffisant dans la mesure ou une moindre altération dans les données sera reflétée par un changement dans le "résumé".
L'en-tête Content-MD5
procure un test de
l'intégrité de message de bout en bout (MIC) sur
le corps d'entité. Un proxy ou client pourra tester cet
en-tête pour détecter des modifications
accidentelles du corps d'entité en cours de transfert.
Exemple d'en-tête:
Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
Notez que ceci peut réduire les performances de votre serveur dans la mesure où le "résumé" est calculé à chaque requête (il ne peut être mis en cache).
Content-MD5
n'est émis que pour des
documents servis par le noyau, et à l'exception de tout
module. Par exemple, les documents SSI, la sortie de scripts
CGI, et des réponses en flux d'octet binaire ne pourront
utiliser cet en-tête.
Elle définit le répertoire auquel Apache tente d'accéder avant d'enregistrer un "noyau dump". Par défaut, il s'agit du répertoire ServerRoot, cependant, si ce répertoire n'est pas accessible en écriture par l'utilisateur sous lequel tourne le serveur, le "noyau dump" ne pourra être généré. Si vous souhaitez dans ce cas obtenir un "noyau dump" pour des nécessités de débogage, vous pouvez utiliser cette directive pour spécifier un autre répertoire dans lequel vous avez toute autorisation pour écrire.
DefaultType text/html
Il peut arriver qu'une requête demande au serveur un document dont le type ne peut être déterminé par les tables de MIME.
Le serveur doit informer le client du type de contenu (Content-type) du document. Dans le cas d'un type inconnu, il utilisera le DefaultType. Par exemple :
DefaultType image/gif
sera approprié dans un répertoire contenant une majorité d'images gif dont certaines ne présentent pas explicitement l'extension .gif.
<Directory> et </Directory> sont utilisés pour "encapsuler" un groupe de directives applicables uniquement au réprtoire indiqué ainsi qu'à ses sous-répertoires. Toute directive autorisée dans un contexte de répertoire peut apparaître entre ces deux balises. nomrépertoire est soit le chemin entièrement qualifié du répertoire, ou un motif. Dans un motif, '?' remplace un caractère unique quelconque, et '*' remplace toute séquence de zéro ou plus caractères quelconques. Sur Apache 1.3, vous pouvez aussi utiliser les plages de caractères '[]' comme dans un shell UNIX. De plus aucun des métacaractères ne peut remplacer un '/', ce qui correspond plus intimement à la réaction des shells UNIX. Exemple:
<Directory /usr/local/httpd/htdocs> Options Indexes FollowSymLinks </Directory>
A partir d'Apache 1.2 : peuvent être
utilisées les "expressions régulières",
lesquelles devront être précédées du
caractère ~
. Par exemple :
<Directory ~"^/www/.*/[0-9]{3}">correspondrait à des répertoires dans /www/ dont le nom serait constitué de trois digits.
Si plusieurs sections de répertoires pointent sur le répertoire d'un document (ou l'un de ses pères) sans qu'il s'agisse d'une expression régulière, alors les directives sont appliquées selon la loi de "la plus courte qualification d'abord", combinées aux directives des fichiers .htaccess. Par exemple, avec l'écriture
<Directory /> AllowOverride None
</Directory> <Directory /home/*> AllowOverride
FileInfo </Directory>
pour le contrôle d'accès au document
/home/web/dir/doc.html
les étapes
d'évaluation sont les suivantes :
AllowOverride None
(désactivant les fichiers
.htaccess
).AllowOverride FileInfo
(pour le répertoire /home/web
)./home/web/.htaccess
Les sections exprimant des répertoires sous forme d'expressions régulières sont gérés légèrement différemment par Apache 1.2 et 1.3. Sous Apache 1.2, elles sont combinées aux sections "normales" et s'appliquent dans l'ordre où elles apparaissent dans le fichier de configuration. Elles ne s'appliquent qu'une fois, seulement pour celles qui font partie de la section "à plus courte correspondance". Sous Apache 1.3 les sections basées sur des expressions régulières ne sont pas évaluées tant que toutes les sections "normales" n'ont pas été considérées. A ce moment, les sections "régulières" sont traitées dans l'ordre où elles apparaissent dans le fichier de configuration. Par exemple, avec l'écriture
<Directory ~ abc$> ... directives ici ...
</Directory>
Supposez que le nom de fichier demandé soit
/home/abc/public_html/abc/index.html
. Le serveur
considère chacune des sections /
,
/home
, /home/abc
,
/home/abc/public_html
, et
/home/abc/public_html/abc
dans cet ordre. Sous
Apache 1.2, lorsque /home/abc
est pris en compte,
l'expression régulière correspondra et ses termes
seront appliqués. Sous Apache 1.3 l'expression
régulière n'est pas considérée du
tout à ce point de l'arbre. Elle ne le sera pas tant que
toutes les sections "normales" <Directory>s et
celles des fichiers .htaccess
n'ont pas
été appliquées. A ce moment seulement
l'expression régulière reconnaîtra
/home/abc/public_html/abc
et les directives seront
appliquées.
Notez que l'accès par défaut d'Apache
pour les sections <Directory> est Allow
from All
. Ceci veut dire que par défaut, Apache
desservira tout fichier indiqué par une URL. Nous
recommandons de modifier ceci à l'aide d'un bloc tel
que
<Directory /> Order Deny,Allow Deny from All </Directory>
puis désactiver sélectivement la protection pour les répertoires devant rester accessibles. Voir la page Trucs sur la sécurité pour plus de détails.
Les sections de répertoires apparaissent habituellement dans le fichier access.conf, mais peuvent être présentes dans n'importe quel fichier de configuration. Les directives <Directory> ne peuvent être imbriquées, et ne peuvent petre incluses dans des sections <Limit> ou <LimitExcept>.
Voir aussi : Comment fonctionnent les sections concernant les répertoires, chemins et fichiers pour une explication plus précise concernant la manière dont ces sections sont combinées lorsqu'une requête est traitée.
<DirectoryMatch> et </DirectoryMatch> sont utilisés pour encapsuler un groupe de directives s'appliquant uniquement aux répertoires nommés et ses sous-répertoires, de manière identique à la directive <Directory>. Cependant, elle n'accepte comme argument qu'une expression régulière. Par exemple :
<DirectoryMatch "^/www/.*/[0-9]{3}">
correspondrait aux répertoires de /www/ dont le nom consiste en trois chiffres.
Voir aussi : <Directory> pour une description de
la manière dont les définitions par expression
régulière sont combinées aux sections
<Directory> "normales".
Voir aussi : Comment fonctionnent les sections
concernant les répertoires, chemins et fichiers pour
une explication plus précise concernant la
manière dont ces sections sont combinées
lorsqu'une requête est traitée
DocumentRoot /usr/local/apache/htdocs
Cette directive définit le répertoire racine à partir duquel httpd va distribuer les fichiers. Sauf si le répertoire est pointé par une directive telle que Alias, le serveur ajoute le chemin relatif mentionnée dans l'URL présentée à cette racine pour établir le chemin complet jusqu'au document. Exemple :
DocumentRoot /usr/web
Un accès à
http://www.my.host.com/index.html
se
réferre au document
/usr/web/index.html
.
Un bogue existe pour cette directive mod_dir, laquelle fonctionne mal lorsque DocumentRoot est donnée avec un '/' final (c-à-d. "DocumentRoot /usr/web/"). Il vaut mieux éviter cette écriture.
La directive EBCDICConvert associe une extension de fichier à une possible conversion (On ou Off). Les extensions de fichiers peuvent commencer ou non par un point.
Si le format optionnel On=direction (or
Off=direction) est employé,
où direction est choisi parmi In,
Out ou InOut, alors la directive ne
s'applique seulement que dans une direction de transfert
donnée (In : contenu reçu par une
requête PUT ou POST , Out : contenu
renvoyé à une requete GET ou POST, et
InOut : conversion dans les deux
directions).
Sinon, InOut (conversion dans les deux
directions) est défini.
La configuration de conversion basé sur un type de fichier est testé avant la configuration basé sur les types MIME, afin de permettre aux règles génériques MIME d'être surchargées par une extension spécifique (pplusieurs extensions de fichier peuvent exister pour le même type MIME).
Exemple:
Avec la configuration suivante, les fichiers
*.html contiennent du texte HTML au format EBCDIC,
tandis que les fichiers *.ahtml contiennent du
texte HTML au format ASCII :
# *.html et *.ahtml contiennet du texte HTML : AddType text/html .html .ahtml # *.ahtml n'est pas converti (il contient déjà du texte ASCII) EBCDICConvert Off .ahtml # Les autres fichiers text/html contiennent du texte EBCDIC: EBCDICConvertByType On text/html
Voir également: EBCDICConvertByType et Aperçu des fonctions de conversion EBCDIC
La directive EBCDICConvertByType associe un type MIME (pouvant contenir une *) à une éventuelle conversion (On ou Off).
Si le format optionnel On=direction (or
Off=direction) est employé,
où direction est choisi parmi In,
Out ou InOut, alors la directive ne
s'applique seulement que dans une direction de transfert
donnée (In : contenu reçu par une
requête PUT ou POST , Out : contenu
renvoyé à une requete GET ou POST, et
InOut : conversion dans les deux
directions).
Sinon, InOut (conversion dans les deux
directions) est défini.
Par exemple:
Une configuration standard pratique devrait au moins contenir
ces directives :
# All text documents are stored as EBCDIC files: # Tous les document textes sont stockés au format EBCDIC EBCDICConvertByType On text/* message/* multipart/* EBCDICConvertByType On application/x-www-form-urlencoded \ model/vrml application/postscript # Les autres fichiers sont traités comme binaires. EBCDICConvertByType Off */*Si vous servez seulement que des documents ASCII, par exemple provenant d'un montage NFS d'un serveur Unix, utilisez :
# Tous les documents sont déjà en ASCII: EBCDICConvertByType Off */*
Voir également: EBCDICConvert et Aperçu des fonctions de conversion EBCDIC
EBCDICKludge
Off
The EBCDICKludge est proposée par compatibilité avec les versions d'Apache 1.3.0 à 1.3.18. Dans ces versions, tous les fichiers dont le type MIME commence par "text/", "message/" ou "multipart/" ou dont le type est "application/x-www-form-urlencoded" sont convertis par défaut, les autres documents sont retournés sans conversion. Un document est présumé être au format ASCII iuniquement si il est du type "text/x-ascii-sous-type", et ne sera donc pas converti. A la place, le préfixe "x-ascii-" était supprimé du type, obtenant ainsi le type MIME "text/sous-type" comme type du document retourné.
Si la directive EBCDICKludge est mise à
On, et si aucune des extensions de fichiers ne
correspondent aux directives EBCDICConvert définis dans le
contexte , alors le serveur teste avec le type MIME de format
type/x-ascii-sous-type. Si le
document a un tel type alors la chaîne
"x-ascii-" est supprimée et la
conversion est mise à Off. Cela permet de
surcharger l'assertion implicite que tous les fichiers sont
stockés au format EBCDIC, par exemple si Apache sert des
fichiers provenant d'un montage NFS d'un répertoire
contenant des documents ASCII.
En utilisant EBCDICKludge, Il n'y a aucun moyen de forcer un
des autres types MIME (par exemple model/vrml) d'être
traité au format EBCDIC. L'utilisation de la directive
EBCDICConvertByType est
préférable pour définir une telle
conversion. Avant Apache 1.3.19, il n'y avait aucun moyen de
forcer ces document binaires d'être traités comme
des fichiers textes EBCDIC
Voir également : EBCDICConvert, EBCDICConvertByType and Aperçu des fonctions de conversion EBCDIC
Dans l'éventualité d'un problème ou d'une erreur, Apache peut exécuter l'une des quatre actions suivantes :
La première option est celle par défaut, les options 2 à 4 seront obtenues en utilisant la directive ErrorDocument, suivi du code HTTP d'erreur et du message textuel d'erreur, ou une URL.
Messages dans ce contexte, commence par un
guillemet simple ("
), qui ne fait pas partie du
message lui-même. Apache ajoutera souvent des
informations complémentaires explicitant le
problème (ou l'erreur).
L'URL peut débuter par un slash (/) pour des URL locales, ou être complètement qualifiées. Exemples:
ErrorDocument 500
http://foo.example.com/cgi-bin/tester
ErrorDocument 404 /cgi-bin/bad_urls.pl
ErrorDocument 401 /subscription_info.html
ErrorDocument 403 "Sorry can't allow you access today
Notez que lorsque vous spécifiez un
ErrorDocument qui pointe vers une URL externe (c'est
-à-dire toute adresse commençant par quelque
chose du style "http:") Apache émettra une requête
de redirection au client pour lui indiquer où trouver le
document. Ceci peut perturber les robots et d'autres clients
qui essaient de déterminer si une URL est valide en
testant le code retour de la requête. De plus, si vous
utilisez l'écriture ErrorDocument 401
le
client ne saura pas qu'il doit demander un mot de passe
puisqu'il ne recevra pas le code retour 401. Par
conséquent, il est impératif d'utiliser une URL
locale pour une directive "ErrorDocument 401". Ceci est induit
par la nature des schémas d'authentification de base
d'HTTP.
Voir aussi: documentation sur les réponses personnalisées.
ErrorLog
logs/error_log
(Unix)ErrorLog
logs/error.log
(Windows et OS/2)Cette directive définit le nom du fichier dans lequel le serveur marque la trace des erreurs rencontrées. Si le nom de fichier ne commence pas par un slash (/), alors la partie "chemin d'accès" est considérée relativement à ServerRoot. Exemple:
ErrorLog /dev/null
Cette expression a pour effet de désactiver la trace d'erreurs.
Si le fichier commence par une barre verticale (|), il est censé être une commande à exécuter pour ttraiter le message d'erreur.Apache 1.3 et ultérieur: en
utilisant syslog
à la place d'un fichier
permet d'employer syslogd(8) si le système l'accepte. Le
défau est d'utiliser la fonction syslog
local7
, mais vous pouvez remplacer ceci en
utilisant la syntaxe syslog:
service
où service peut être un des noms
documenté dans syslog(1).
Sécurité : Voir la page note sur la securité pour plus d'information concernant une possibilité de brêche de sécurité si le répertoire d'accueil des fichiers de trace peut être écrit par tout autre utilisateur que le propriétaire du processus serveur.
La directive <Files> permet une gestion de contrôle d'accès fichier par fichier. Elle est comparable aux directives <Directory> et <Location>. Elle doit s'apparier à une directive </Files>. Les directives applicables au fichier indiqué sont encapsulées entre ces deux balises. Les sections <Files> sont traitées dans l'ordre où elles apparaissent dans le fichier de configuration, une fois traitées les sections <Directory> et les fichiers .htaccess, mais avant les sections <Location>.
L'argument filename peut inclure un nom de fichier,
où un motif, dans lequel '?' correspond à tout
caractère unique quelconque, et '*' correspond à
une séquence de zéro à un nombre
quelconque de caractères. Les "expressions
régulières" peuvent aussi être
utilisées, pourvu qu'elles soient
précédées du caractère
~
. Par exemple :
<Files ~"\.(gif|jpe?g|png)$">
correspondrait à la majorité des fichiers graphiques utilisés sur Internet. A partir de la version 1.3 d'Apache, l'usage de la directive <FilesMatch> est cependant préférable.
Notez que, contrairement aux sections <Directory> et <Location>, les sections
<Files> peuvent apparaître dans des
fichiers .htaccess
. Ceci permet aux utilisateurs
de contrôler l'accès à leurs propres
fichiers, sur un mode individuel. Lorsqu'elles sont
utilisées dans un fichier .htaccess
, si
nomfichier ne commence pas par un slash (/), le
répertoire courant contenant ledit fichier
.htaccess
y sera préfixé
automatiquement.
Voir aussi : Comment fonctionnent les sections concernant les répertoires, chemins et fichiers pour une explication plus précise concernant la manière dont ces sections sont combinées lorsqu'une requête est traitée
La directive <FilesMatch> permet un contrôle d'accès fichier par fichier, tout comme la directive <Files>. Cependant, elle n'accepte qu'un argument sous forme d'expression régulière. Par exemple :
<FilesMatch "\.(gif|jpe?g|png)$">
qui correspondrait à la plupart des fichiers graphiques utilisés sur Internet.
Voir aussi : Comment fonctionnent les sections concernant les répertoires, chemins et fichiers pour une explication plus précise concernant la manière dont ces sections sont combinées lorsqu'une requête est traitée
Group
#-1
La directive Group définit le groupe dont les requêtes seront traitées par le serveur. Pour utiliser cette directive, le serveur stand-alone doit tout d'abord être exécuté par l'utilisateur "root". groupeUnix est à choisir parmi :
Il est recommendé de créer un nouveau groupe
d'utilisateurs pour les utilisateurs exécutant le
serveur. Certains administrateurs assignent le serveur à
l'utilisateur nobody
, mais ceci n'est pas toujours
possible ou souhaîtable.
Note : si vous démarrez le serveur sous un compte utilisateur autre que "root", la commutation sur un autre groupe échouera, et le groupe utilisé restera le groupe initial de l'utilisateur.
Note spéciale : L'utilisation de cette directive dans un contexte <VirtualHost> nécessite un suEXEC wrapper correctement configuré. De cette manière et dans ce contexte, seul le groupe dans lequel sont exécutés les CGI sont affectés. Toute requête autre que CGI sont toujours lancées dans le groupe défini par la directive Group principale.
Sécurité : Voir Utilisateur pour une discussion plus détaillée sur les aspects utilisateurs.
HostNameLookups off
double
n'est disponible qu'à partir de la
version 1.3 d'Apache.on
pour
toute version antérieure à la version 1.3
d'Apache.
Cette directive autorise la résolution DNS pour la
trace d'accès (et pour les passer aux CGI/SSI en
REMOTE_HOST
). La valeur double
signifie une résolution DNS inverse double.
C'est-à-dire, après qu'une résolution
inverse soit effectuée, une résolution est
ensuite effectuée à partir du résultat
obtenu. Au moins une des adresses IP obtenues par la
deuxième résolution doit correspondre à
l'adresse originale. (Dans le langage des "fous de tcp" ceci
s'appelle PARANOID
.)
Indépendamment du mode choisi, lorsque mod_access est utilisé pour
faire du contrôle d'accès par nom d'hôte,
une résolution inverse double sera effectuée.
Ceci est indispensable pour des raisons de
sécurité. Notez que le résultat de cette
résolution inverse double n'est en général
pas accessible sauf si l'option HostnameLookups
double est activée. Par exemple, si l'option est
simplement HostnameLookups on et une requête
est reçue vers un objet soumis à des restrictions
quant aux noms d'hôtes, et quelque soit le
résultat de la réslution inverse double, les CGI
recevront le résultat de la résolution inverse
dans la variable d'environnement REMOTE_HOST
.
Par défaut, l'état choisi était
on
dans les versions d'apache antérieures
à la version 1.3. Elle est aujourd'hui à
off
afin de diminuer le trafic pour les sites qui
n'ont pas un besoin absolu de la résolution inverse.
C'est aussi un avantage pour les utilisateurs finaux qui
n'auront pas à attendre la fin du processus de
résolution avant d'être servis. Des sites
chargés devraient plutôt laisser cette opyion
à off
, dans la mesure où une
recherche DNS peut consommer un temps non négligeable.
L'utilitaire logresolve
, fourni dans le
répertoire /support, peut être
utilisé pour résoudre des noms d'hôtes
à partir des adresses IP tracées en mode
"offline".
IdentityCheck off
Cette directive autorise une trace conforme à la
RFC1413 du nom d'utilisateur pour chaque connexion, lorsque la
machine cliente exécute identd ou un procesus similaire.
Cette information est tracée dans le fichier
access log
. booléen vaut soit
on
ou off
.
Cette information n'est absolument pas certifiée et ne peut être considérée que pour une analyse sommaire.
Notez que ce fontionnement peut rallonger notablement les délais d'accès à votre serveur dans la mesure où chaque requête nécessite l'exécution d'une résolution. Lorsque des "firewalls" sont présents chaque résolution peut éventuellement échouer et ajouter ainsi 30 secondes d'attente pour chaque accès. En conclusion, cette option n'est en général pas opportune pour des serveurs Internet ouverts au public.
La section <IfDefine test>...</IfDefine> est employée pour délimiter des directives conditionnelles. Les directives à l'intérieur d'un section IfDefine ne sont prises en compte que si test est vraie. Si test est faux, tout ce qui se trouve entre le marqueur de début et celui de fin est ignoré.
Le test de la section <IfDefine> peut exister sous deux formes :
!
nom-paramètreDans le premier cas, les directives entre les marqueurs de début et de fin ne sont traité que si le paramètre nommé nom-paramètre est défini. Dans le deuxième cas, les directives entre les marqueurs de début et de fin ne sont traité que si le paramètre nommé nom-paramètre n'est pas défini.
L'argument nom-paramètre est une
définition qui peut être donnée en ligne de
commande d'httpd en utilisant l'option
-D
nom-paramètre, au lancement du
serveur.
Les sections <IfDefine> peuvent s'imbriquer, ce qui permet de réaliser des test sur plusieurs paramètres. Par exemple :
$ httpd -DReverseProxy ... # httpd.conf <IfDefine ReverseProxy> LoadModule rewrite_module libexec/mod_rewrite.so LoadModule proxy_module libexec/libproxy.so </IfDefine>
La section <IfModule test>...</IfModule> permet de rendre conditionnelles un groupe de directives. Les directives à l'intérieur d'une section IfModule ne sont considérées que si le test est vérifié. Si test vaut faux, toute directive inclue entre la balise de début et celle de fin sont ignorées.
Le test d'une section <IfModule> peut prendre l'une des formes suivantes :
Dans le premier cas, les directives entre les deux balises de début et de fin ne sont traitées que si le module indiqué par nomModule est compilé dans votre version d'Apache. La seconde forme inverse le sens du test, et ne traite les directives que si le module nomModule n'est pas compilé.
L'argument nomModule spécifie un nom de
module par son nom de fichier source, tel qu'appelé par
la compilation. Par exemple, mod_rewrite.c
.
Les sections <IfModule> peuvent être imbriquées, ce qui peut être utile pour implémenter simplement des tests multi-modules.
Cette directive permet l'inclusion d'autres fichiers de configuration à partir d'autres fichiers de configuration serveur.
A partir de la version Apache 1.3.13, si
Include
pointe vers un répertoire plutot
qu'un fichier, Apche lira tous fichiers de ce
répertoire, ou des sous-répertoires, et traitera
chacun de ces fichiers de configuration.
KeepAlive
5
KeepAlive
On
L'extension Keep-Alive d'HTTP/1.0 et les connexions
persistantes d'HTTP/1.1 fournissent des sessions durables HTTP
, qui autorisent plusieurs requêtes à être
envoyées sur la même connexion. Dans certains cas,
il a été constaté une réduction de
50% du temps de latence ppour des documents HTML contenant de
nombreuses images. Pour activer les connexions persistantes
(keep-alive) à partir d'Apache 1.2 il faut
définir la directive KeepAlive On
.
Pour les clients HTTP/1.1, Les connexions persistantes ne sont employées que si elles sont spécifiquement demandées par un client. De plus, une connexion persistantes ne peut être employées que si la taille du contenu est connu à l'avance. Ceci implique que les contenus dynamiques, tels que les scripts CGI, les pages SSI, et les listes de répertoires générés par le serveur n'utilisent pas de connexions persistentes pour les clients HTTP/1.0. Pour les clients HTTP/1.1, les connexions sont persistantes par défaut à moins d'être spécifiée. Si le client le demande, l'encodage par tranches est utilisé afin d'envoyer des contenus de tailles inconnus au travers de connxions persistantes.
Sous Apache 1.1: Mettre
requêtesMax au nombre maximum de requêtes
qu'Apache peut traiter par connexion persistante. Une
limitation est imposée pour éviter qu'un client
ne vienne asphyxier votre serveur en ressources. Mettre un
0
pour désactiver ce support. A partir de
la version 1.2, ceci est contrôlé par la directive
MaxKeepAliveRequests
KeepAliveTimeout 15
Le nombre de secondes pendant lesquelles Apache attendra une requête postérieure avant de rompre une connexion. Dès qu'une requête est reçue, la valeur de la temporisation spécifiée par la directive Timeout s'applique.
Mettre KeepAliveTimeout
à une grande
valeur peut créer des problèmes de performance
pour des serveurs chargés. Le plus grand est ce
délai, le plus les processus du serveur seront
occupés en attente de connexions avec des clients
inactifs.
Les contrôles d'accès sont normalement actives
pour toutes les méthodes
d'accès, et ceci est le comportement normal. En
général, les directives de contrôle
d'accès ne doivent être placées à
l'intérieur d'une section
<limit>
.
Le but de la directive <Limit> est de restreindre la portée des contrôles d'accès à certaines méthodes HTTP. Pour toutes les autres méthodes, les restrictions d'accès qui sont situées à l'intérieur de <Limit> sont sans effets. L'exemple suivant applique le contrôle d'accès uniquement aux méthodes POST, PUT, and DELETE, laissant les autres méthodes non protégées :
<Limit POST PUT DELETE>
Require valid-user
</Limit>
Les noms de méthodes peuvent être choisis parmi
GET, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH,
PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, et UNLOCK.
Le nom de la méthode est sensible à la
casse. Si GET est employé, il restreindra
également les requêtes HEAD.
<LimitExcept> et </LimitExcept> sont employés pour entourer un groupe de directives de contrôle d'accès qui s'appliqueront pour n'importe quelle méthode d'accès ne se trouvant pas en arguments Cette directive est l'oppsée de <Limit> et peut être employée pour contrôler les méthodes non reconnues ou non standard. Voir la documentation de <Limit> pour plus de détails.
LimitRequestBody 0
Cette directive détermine la taille maximale en
octets que peut avoir le corps d'une requête. Elle peut
aller de 0 (illimité) à 2147483647 (2GB). La
valeur par défaut est déterminée à
la compilation par la constante
DEFAULT_LIMIT_REQUEST_BODY
(0 dans les
distributions).
La directive LimitRequestBody directive permet à l'utilisateur de fixer une limite à la taille du corps d'une requête à l'intérieur du contexte où cette directive est située (serveur, par répertoire, par fichier). Si le client effezctue une requête excédant cette limite, le serveur retournera un message d'erreur au lieu de traiter la requête. La taille d'une requête normale peut beaucoup varier en fonction de la nature de la ressource demandée et des méthodes d'accès permise sur cette ressource. Typiquement les scripts CGI utilise le corps du message pour passer des informations au serveur. Des implémentation de la méthode PUT nécessite une valeur au moins aussi grande que le serveur souhaite recevoir pour cette ressource.
Cette directive donne à l'administrateur un plus grand contrôle par rapport à des requêtes anormales de clients, et peut être utile pour éviter certaines formes d'attaques par déni de service.
LimitRequestFields 100
Number est un entier allant de 0 (signifiant sans
limite) à 32767. La valeur par défaut est
définie à la compilation par la constante
DEFAULT_LIMIT_REQUEST_FIELDS
(100 dans la
distribution).
La directive LimitRequestFields permet à l'administrateur du serveur de modifier le nombre maximum de champs autorisé à l'intérieur de l'en-tête d'une requête HTTP. Un serveur doit avoir cette valeur supérieure au nombre de champs qu'un client normal peut inclure. Le nombre de champs utilisé par un client excède rarement 20, mais ceci peut varier en fonction de l'implémentation des clients, le plus souvent il dépend du niveau auquel le client a configuré son butineur pour accepter une négociation de contenu très fine. Les extensions HTTP optionnelles sont exprimées en utilisant des champs dans l'en-tête de requête.
Cette directive permet à l'administrateur un meilleur contrôle par rapport à des requêtes anormales, ce qui peut être utile pour éviter certaines attaques par déni de service. Cette valeur doit être augmentée si certains clients obtiennent un message d'erreur à leurs requêtes indiquant que trop de champs sont envoyés dans la requête.
LimitRequestFieldsize 8190
Cette directive indique la taille maximale de
l'en-tête d'une requête HTTP et peut aller de 0
octets à la valeur définit à la
compilation par la constante
DEFAULT_LIMIT_REQUEST_FIELDSIZE
(8190 dans la
distribution standard).
La directive LimitRequestFieldsize permet à l'administrateur de limiter la taille autorisée pour le champ d'en-tête HTTP d'une requête à une valeur inférieure à celle définie à la compilation. Un serveur doit avoir cette valeur suffisamment grande pour pouvoir traiter les requêtes de clients normaux. La taille d'une requête noramle peut beaucoup varier en fonction de l'implémentation du client, le plus souvent il dépend du niveau auquel le client a configuré son butineur pour accepter une négociation de contenu très fine.
Cette directive permet l'administrateur d'avoir un meilleur contrôle sur des requêtes ayant un comportement anormale, ce qui peut être utile afin d'éviter certaines formes d'attaques par déni de service. Dans des conditions normales, cette valeur doit rester celle par défaut.
LimitRequestLine 8190
Cette directive indique la taille maximale d'une
requête HTTP et peut aller de 0 octets à
la valeur définit à la compilation par la
constante DEFAULT_LIMIT_REQUEST_LINE
(8190 dans la
distribution standard).
La directive LimitRequestLine permet à l'administrateur de réduire la limite fixée pour une requête HTTP en dessous de la valeur fixée à la compilation. Comme une requête est composée de la méthode HTTP, d'une URI et de la version du protocole utilisé, la directive LimitRequestLine place une restriction sur la taille maximale que peut avoir une URI dansune requête. Un serveur doit avoir cette valeur suffisamment grande pour pouvoir traiter n'importe quelle de ses ressources, en prenant en compte les informations qui pourrait être passées dans une requête GET.
Cette directive permet l'administrateur d'avoir un meilleur contrôle sur des requêtes ayant un comportement anormale, ce qui peut être utile afin d'éviter certaines formes d'attaques par déni de service. Dans des conditions normales, cette valeur doit rester celle par défaut.
La directive Listen enjoint Apache à écouter plus d'une adresse IP ou port; par défaut Apache répond aux requêtes reçues sur toutes les interfaces IP, mais seulement celles arrivant sur le port donné par la directive Port.
Listen peut être utilisée à la place de BindAddress et Port. Elle indique au serveur d'accepter des requêtes entrantes sur le port spécifié ou sur une combinaison adresse-port. Si le premier format est utilisé (avec seule mention d'un numéro de port), le serveur "écoutera" tous les ports spécifiés sur chacune des interfaces IP qu'il connaît, plutôt que sur le port donné par la directive Port. Si une adresse IP adresse IP est précisée en complément, le serveur restreindra son écoute à la combinaison adresse-port précisée.Notez que vous avez toujours besoin de la directive Port qui permettent à Apache de générer les URL de retour vers votre serveur.
Plusieurs directives Listen peuvent être utilisées pour spécifier un ensemble d'adresses et de ports à écouter. Le serveur répondra aux requêtes reçues sur n'importe laquelle des combinaisons adresse-port ainsi spécifiée.
Par exemple, pour autoriser le serveur à accepter des connexions sur les ports 80 et 8000, écrire :
Listen 80 Listen 8000
Pour autoriser un serveur à accepter des connexions sur deux "sockets" qualifiés, écrire :
Listen 192.170.2.1:80 Listen 192.170.2.5:8000
Voir aussi: Apache et DNS
Voir aussi: Configurer
les ports et adresses utilisée par Apache
Voir aussi : Bogues
connus
ListenBacklog 511
La longueur maximale de la file d'attente des connexions en
attente. En général, aucun ajustement n'est
nécessaire, cependant, il est souhaitable sur certains
systèmes d'augmenter cette longueur de file pour
répondre à des attaques TCP SYN. Voir les
paramètres backlog dans l'appel système
listen(2)
.
Cette directive est limitée à un petit nombre par le système d'exploitation. Elle peut varier d'un système à un autre. Il faut également noter que pour la plupart des systèmes, la valeur réellement utilisée n'est pas celle spécifiée par la directive, mais un nombre basé sur cette valeur (généralement plus grande).
La directive <Location> permet d'instaurer un
contrôle d'accès sur une base URL. Elle est
comparable à la directive <Directory>, et doit s'apparier
à une directive </Location>. Les
directives s'appliquant à l'URL précisée
seront à inclure entre ces deux balises. Les sections
<Location> sont traitées dans l'ordre
où elles apparaissent dans le fichier de configuration,
une fois les sections <Directory> et les
fichiers .htaccess
traités.
Il faut noter que les URL n'ont pas du tout à suivre la même organisation que le système de fichiers, et il faut souligner que la directive <Location> opère de manière totalement indépendante du système de fichiers.
Le préfixe d'URL devra, sauf pour des
requêtes à un proxy, être de la forme
/chemin/
, et ne devra pas inclure de mention
http://nomserveur
. Elle ne protège pas
nécessairement un répertoire (cela peut
être un fichier individuel, ou un ensemble de fichiers),
et peut inclure des métacaractères. Dans un motif
(avec des métacaractères), '?' remplace un
caractère quelconque, et '*' remplace toute chaîne
quelconque de 0 ou plus caractères. POur les
requêtes à un proxy, l'URL doitt être de la
forme scheme://nomserveur/serveur
, et vous devez
inclure le préfixe.
Apache 1.2 et plus : Des expression
régulières peuvent être utilisées,
à condition de les faire précéder du
caractère ~
. Par exemple :
<Location ~ "/(extra|special)/data">
correspondrait à des URL contenant la sous-chaîne "/extra/data" ou "/special/data". Cependant, sous Apache 1.3, l'utilisation de la directive <LocationMatch> est conseillée.
La fonctionnalité Location est particulièrement pratique lorsque combinée à la directive SetHandler. Par exemple, pour permettre des requêtes sur les rapports d'état, mais ne les autoriser que pour des agents requérant à partir du domaine foo.com, vous pourriez écrire :
<Location /status> SetHandler server-status order deny,allow deny from all allow from .foo.com </Location>
Note sur / (barre oblique) pour les version
supérieures à 1.3: La caractère
barre oblique à une signification particulière en
fonction de l'endroit où il se situe. Des personnes sont
habitués au comportement dans certains systèmes
de fichiers où de multiples caractères obliques
sont remplacés par un caractère unique (par
exemple /home///foo
est identique à
/home/foo
). Dans le monde des URL ceci n'est pas
obligatoirement vrai. La directive
<LocationMatch>
et la version avec
expression régulière de
<Location>
demande de spécifier
plusieurs caractères obliques si ceci est votre
intention. Par exemple, <LocationMatch
^/abc>
fonctionnera avec l'URL /abc
mais
pas avec l'URL //abc
. La directive (sans
expression régulière)
<Location>
se comporte de manière
similaire quand elle est employée pour des
requêtes proxy. Mais si la directive (sans expression
régulière) <Location>
est
utilisée pour des requêtes sans proxy, il
associera implicitement plusieurs obliques à un seul.
Par exemple, si vous spécifiez <Location
/abc/def>
et que la requête est
/abc//def
celle ci correspondra.
Voir aussi: Comment fonctionnent les sections concernant les répertoires, chemins et fichiers pour une explication plus précise concernant la manière dont ces sections sont combinées lorsqu'une requête est traitée.
La directive <LocationMatch> permet l'établissement d'un contrôle d'accès sur une base URL, d'une façon identique à la directive <Location>. Cependant, elle n'accepte qu'une expression régulière comme argument. Par exemple :
<LocationMatch "/(extra|special)/data">
représente des URL contenant l'une des
sous-chaînes "/extra/data" ou "/special/data". LockFile
logs/accept.lock
La directive LockFile indique le chemin
d'accès du fichier de verrouillage utilisé
lorsqu'Apache est compilé en mode
USE_FCNTL_SERIALIZED_ACCEPT
ou
USE_FLOCK_SERIALIZED_ACCEPT
. Ce paramètre
sera laissé généralement dans son
état par défaut. La raison principale qui
conduirait à modifier ce paramètre serait le fait
que le répertoire des traces (logs
) soit
monté sous NFS, le fichier de verrouillage devant de
préférence être situé sur un disque
local à la machine serveur pour autant que possible. Le
PID du processus serveur principal est automatiquement
rajouté au nom de fichier.
SECURITE : il vaut mieux éviter de
metttre ce fichier dans un répertoire inscriptible par
tout le monde tel que /var/tmp
cas quelqu'un
pourrait créer une attaque par déni de service et
empécher le serveur de redémarrer en
créant un fichier de verrouillage de même nom que
celui que veut créer le serveur.
LogLevel
error
LogLevel ajuste le niveau de verbosité des messages inscrits dans les traces d'erreur (voir la directive ErrorLog). Les niveaux possibles sont par ordre de gravité décroissante :
Niveau | Description |
---|---|
Exemple | |
emerg |
Urgences - le système est inutilisable. |
"Child cannot open lock file. Exiting" | |
alert |
Une action doit être prise immédiatement. |
"getpwuid: couldn't determine user name from uid" | |
crit |
Conditions critiques. |
"socket: Failed to get a socket, exiting child" | |
error |
Cas d'erreur. |
"Premature end of script headers" | |
warn |
Avertissements. |
"child process 1234 did not exit, sending another SIGHUP" | |
notice |
Normal mais condition significative. |
"httpd: caught SIGBUS, attempting to dump core in ..." | |
info |
Pour information. |
"Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..." | |
debug |
Messages de déboguage |
"Opening config file ..." |
Quand un niveau est spécifié, les messages des
niveaux de plus haute gravité seront également
rapportés. Par exemple, quand la directive
LogLevel info
est définie, les messages de
niveau notice
et warn
seront aussi
notifiés.
L'utilisation d'un niveau de gravité d'au moins
crit
est recommandé.
MaxClients 256
La directive MaxClients indique le nombre limite de requêtes simultanées pouvant être acceptées par le serveur ; il représente le nombre maximum de processus serveur fils qui peuvent tourner à un instant donné. Pour configurer plus de 256 clients, vous devez modifier la constante HARD_SERVER_LIMIT du fichier source d'Apache httpd.h et recompiler Apache.
Les tentatives de connexions au delà de MaxClients sont normalement mises en attente, jusqu'à une limite fixée par la directive ListenBacklog. Une fois qu'un processus fils est libre à la fin d'une requête différente, la connexion en attente est traitée.
MaxKeepAliveRequests 100
La directive MaxKeepAliveRequests limite le nombre
de requêtes permises pour une connexion unique lorsque la
directive KeepAlive est
activée. Si nombre vaut "0
",
chaque connexion peut admettre un nombre illimité de
requêtes. Nous recommendons que ce paramètre soit
réglé sur une valeur relativement haute pour
obtenir des performances optimales du serveur. Dans la version
1.1 d'Apache, ceci est contrôlé par la directive
Keepalive
MaxRequestsPerChild 0
La directive MaxRequestsPerChild indique le nombre limite de requêtes qu'un processus serveur fils peut traîter. Après MaxRequestsPerChild requêtes, ce processus fils meurt. Si ce paramètre est fixé à 0, alors les processus fils ne meurent jamais.
Le fait de mettre MaxRequestsPerChild à une valeur non nulle a deux conséquences bénéfiques :
Cependant sur les systèmes Win32, il est recommandé de mettre cette valeur à 0. Si celle ci est à une valeur non nulle, quand le nombre de requêtes est atteint, le processus fils quitte, et est relancé en relisant les fichiers de configuration. Ceci peut conduire à un comportement imprévisible si vous avez modifié un fichier de configuration, mais ne souhaitez pas que ces changements soient pris en compte. Voir également ThreadsPerChild.
NOTE: pour les requêtes KeepAlive requests, seule la première requête est comptée. En réalité, il change le comportement afin de limiter le nombre de connexions par fils.
MaxSpareServers 10
La directive MaxSpareServers indique le nombre maximal de processus fils en attente. Un processus en attente est un processus qui existe, mais qui ne traite pas de requête. S'il existe plus de MaxSpareServers de ces processus, alors le père viendra tuer les processus en supplémentaires.
L'activation de cette fonctionnalité ne devrait être nécessaire que sur les site vraiment très chargés. Régler ce paramètre sur une grande valeur est de toutes façon toujours une mauvaise idée.
Cette directive n'a aucun effet quand elle est employée sur les plates-formes WIndows.
Voir aussi MinSpareServers et StartServers.
MinSpareServers 5
La directive MinSpareServers indique le nombre minimum de processus fils en attente qu'un serveur pourra conserver. S'il existe moins de MinSpareServers processus serveurs fils en attente, le processus père recréera des processus fils au rythme de 1 par seconde.
L'activation de cette fonctionnalité ne devrait être nécessaire que sur des sites très chargés. Régler ce paramètre sur une grande valeur est de toutes façons toujours une mauvaise idée.
Cette directive n'a aucun effet quand elle est employée sur les plates-formes WIndows.
Voir aussi MaxSpareServers et StartServers.
La directive NameVirtualHost est nécessaire si vous souhaitez configurer des hôtes virtuels nommés.
Bien que addr puisse être exprimée comme un nom d'hôte, il est recommandé d'utiliser une adresse IP, exemple :
NameVirtualHost 111.22.33.44
Avec cette directive NameVirtualHost, l'adresse nommée par le nom de votre hôte virtuel se résout. Si vous exploitez plusieurs hôtes nommés sur des adresses multiples, répétez cette directive autant de fois que nécessaire (pour chaque adresse).
Note: le "serveur principal" et tous les serveurs "par défaut" ne seront jamais servis pour une requête vers une adresse IP NameVirtualHost (à moins que pour une raison donnée vous définissiez NameVirtualHost mais qu'aucun VirtualHosts ne soit défini pour cette adresse).
En option, vous pouvez préciser un numéro de port sur lequel l'hôte virtuel nommé sera atteint, par exemple :
NameVirtualHost 111.22.33.44:8080
A partir de la version 1.3.13, vous pouvez donner comme adresse
*
Ceci crée un NameVirtualHost qui
correspond à toutes les connexions venant de toutes les
adresses IP qui ne sont pas configurés avec une autre
directive NameVirtualHost ou un section <VirtualHost>. Cette option est
pratique si vous n'utilisez que des hôtes virtuels
nommés et que vous ne souhaitez pas coder en dur
l'adresse IP de votre machine dans le fichier de
configuration.La directive Options contrôle quelles fonctions du serveur sont disponibles dans un répertoire particulier.
option peut valoir None
, auquel cas
aucune fonction supplémentaire n'est disponible, ou une
ou plus des possibilités suivantes :
Note: même si le serveur suit le lien symbolique, il ne doit pas changer le chemin d'accès afin de ne pas entrer en contradiction avec les sections <Directory>.
#include
des scripts CGI.MultiViews
est
permis.Normalement, si plusieurs options Options
peuvent être appliquées à un
répertoire, alors la plus restrictive est
appliquée ; les options ne sont pas combinées.
Cependant, si all les options dans la directive
Options
sontprécédées d'un
symbole + ou -, alors les options sont alors combinées
entre elles. Toute option précédée d'un +
est ajoutée aux options en cours, toute option
précédée d'un - est
désactivée.
Par exemple, sans symboles + ni - :
<Directory /web/docs> Options Indexes FollowSymLinks </Directory> <Directory /web/docs/spec> Options Includes </Directory>
seul Includes
sera activé pour le
répertoire /web/docs/spec
. Cependant, si la
seconde directive d'Options
utilise les symboles +
et - :
<Directory /web/docs> Options Indexes FollowSymLinks </Directory> <Directory /web/docs/spec> Options +Includes -Indexes </Directory>
alors les options FollowSymLinks
et
Includes
sont validées pour le
répertoire /web/docs/spec
.
PidFile
logs/httpd.pid
La directive PidFile définit le fichier dans lequel le serveur enregistre l'identificateur de processus du démon. Si le nom de fichier ne commence pas par un slash (/) alors le fichier est défini relativement au ServerRoot. Le fichier PidFile n'est utilisé que dans le mode standalone.
Il est souvent utile de pouvoir envoyer un signal au serveur, pour qu'il referme et réouvre ses fichiers ErrorLog et TransferLog, et relise ses fichiers de configuration. Ceci peut être fait en envoyant un signal SIGHUP (kill -1) au processus identifié par l'identificateur de processus marqué dans PidFile.
Le fichier PidFile est concerné par les mêmes problèmes d'emplacement et de securité que les fichiers de trace.
Port
80
numéro est un nombre compris entre 0 et
65535; certains numéros de ports (surtout en dessous de
1024) sont réservés pour des protocoles
spécifiques. Une liste des ports
prédéfinis est consultable dans la RFC 1340
"Assigned Numbers" /etc/services
; le port standard
assigné au protocole http est le port 80.
La directive Port a deux comportements, le premier est nécessaire pour assurer la compatibilité NCSA (et qui peut préter à confusion dans le contexte d'Apache).
:numéro
alors la directive Port n'a aucun
effet quant au socket que le serveur écoute.SERVER_PORT
(pour les CGI et les SSI), laquelle est
utilisée lorsque le serveur génère une
URL qui point sur lui-même (par exemple lorsqu'il
indique une indirection externe vers lui-même).Dans aucun cas une définition du Port ne définit à quel port un VirtualHost répond, la directive VirtualHost elle-même se chargeant de cette définition.
Le comportement premier de la directive Port doit être considéré comme similaire à celui de la directive ServerName. ServerName et Port spécifient conjointement ce que vous considérez être l'adresse canonique du serveur.
Le Port 80 est l'un des ports prédéfinis
d'Unix. Tous les ports numérotés en dessous de
1024 sont réservés à un usage
système, c-à-d. que des utilisateurs non
privilégiés (non-root) ne peuvent les utiliser ;
ces derniers peuvent par contre utiliser des ports de plus haut
rang. Pour utiliser le port 80, le serveur doit être
exécuté sous root
. Après
avoir lié le port (bind) et avant d'accepter des
requêtes, Apache changera son utilisateur associé
tel que défini par la directive User.
Si vous ne pouvez utiliser le port 80, choisissez tout autre port libre. Les utilisateurs non-root devront choisir un numéro de port supérieur à 1023, 8000 par exemple.
Sécurité : si vous
démarrez le serveur sous root
, assurez vous
que la directive User ne mentionne pas
root
. Si vous traitez des requêtes en
disposant toujours de super privilèges, vous ouvrez
votre système à des attaques majeures.
Cette directive choisi quels utilisateurs autorisés peuvent accéder à un répertoire. Les syntaxes valides sont :
Seuls les utilisateurs nommés peuvent accéder au répertoire.
Seuls les utilisateurs des groupes cités peuvent accéder au répertoire.
Tout utilisateur reconnu peut accéder au répertoire (par opposition aux non utilisateurs).
Si require
apparaît dans une section <Limit>, alors les restrictions ne sont
appliquées qu'aux méthodes http
mentionnées. Autrement, toutes les méthodes http
sont restreintes. Exemple :
AuthType Basic AuthName unDomaine AuthUserFile /web/users AuthGroupFile /web/groups <Limit GET POST> require group admin </Limit>
Pour fonctionner correctement, la directive Require doit être accompagné de directives AuthName et AuthType, et de directives de type AuthUserFile et AuthGroupFile (servant à définir les utilisateurs et les groupes).
ResourceConfig conf/srm.conf
Le serveur lit dans ce fichier des directives
supplémentaires, après avoir lu le fichier
httpd.conf
. nomfichier est
considéré relativement à ServerRoot. Cette fonctionnalité
peut être désactivée par l'écriture
:
ResourceConfig /dev/null
ou sur les serveurs Win32
ResourceConfig nul
Historiquement, ce fichier contenait essentiellement les directives autres que celles servant à la configuration du serveur ou les sections <Directory> ; en fait, il peut contenir maintenant toute directive admise dans le contexte configuration serveur.
A partir de la version 1.3.13, si la directive
ResourceConfig
pointe sur un répertoire
plutot qu'un fichier, Apache lira tous les fichiers de ce
répertoire ou de ses sous-répertoires et les
traitera comme fichiers de configuration.
Voir aussi AccessConfig.
Accepte 1 ou 2 parametères. Le premier paramètre indique la limite logicielle pour tous les processus et le second paramètre la limite supérieure en termes de ressources. Chacun des paramètres peut être exprimé par un nombre, ou max pour indiquer au serveur que la limite est celle imposée par le système d'exploitation. La limite supérieure en ressource ne peut être atteinte que si le serveur tourne sous root, ou éventuellement pendant la phase de démarrage.
Ceci est valide pour les processus lancés par les processus fils d'Apache pour le traitement des requêtes et non pour les processus fils d'Apache eux-mêmes. Cela inclut les scripts CGI, les commandes exec SSI, mais pas les processus lancés par le processu Apache père tels que les traces.
La limite de ressources CPU est exprimée en secondes par processus.
Voir aussi RLimitMEM ou RLimitNPROC.
Accepte 1 ou 2 paramètres. Le premier paramètre fixe la limite logicielle en ressources mémoire pour tous les processus tandis que le second paramètre fixe la limite absolue de ressources mémoire. Chaque paramètre peut être un nombre, ou max pour indiquer au serveur que la limite est fixée par le système d'exploitation. La limite supérieure en ressource ne peut être atteinte que si le serveur tourne sous root, ou éventuellement pendant la phase de démarrage.
Ceci est valide pour les processus lancés par les processus fils d'Apache pour le traitement des requêtes et non pour les processus fils d'Apache eux-mêmes. Cela inclut les scripts CGI, les commandes exec SSI, mais pas les processus lancés par le processu Apache père tels que les traces.
Les ressources mémoire sont exprimées en octets par processus.
Voir aussi RLimitCPU ou RLimitNPROC.
Accepte 1 ou 2 paramètres. Le premier paramètre fixe la limite logicielle en ressources pour tous les processus tandis que le second paramètre fixe la limite absolue de ressources mémoire. Chaque paramètre peut être un nombre, ou max pour indiquer au serveur que la limite est fixée par le système d'exploitation. La limite supérieure en ressource ne peut être atteinte que si le serveur tourne sous root, ou éventuellement pendant la phase de démarrage.
Ceci est valide pour les processus lancés par les processus fils d'Apache pour le traitement des requêtes et non pour les processus fils d'Apache eux-mêmes. Cela inclut les scripts CGI, les commandes exec SSI, mais pas les processus lancés par le processu Apache père tels que les traces.
Cette limite contrôle le nombre de processus maximum par utilisateur.
Note : Si les processus CGI ne tournent pas sous un autre utilisateur que l'utilisateur du serveur, cette directive limitera aussi le nombre de processus que le serveur lui-même peut créer. Cette situation sera indiquée de façon évidente par des messages d'erreur cannot fork dans le fichier error_log.
Voir aussi RLimitMEM ou RLimitCPU.
Politique d'accès si à la fois 'allow' et 'require' sont utilisés. Le paramètre peut valoir soit 'all' soit 'any'. Cette directive n'est utile que si l'accès à une zone particulière est à la fois restreinte par un username/password et et par l'adresse d'hôte client. Dans ce cas le comportement par défaut ("all") impose au client de passer la restriction d'adresse et d'entrer un identificateur d'utilisateur et un mot de passe valides. Avec l'option "any", le client sera servi si son adresse d'hôte est conforme ou s'il rentre des paramètres d'identification corrects. Ceci peut être utilisé pour restreindre un zone par un mot de passe, tout en laissant quelques client bien identifiés entrer dans le domaine sans avoir à se soumettre à la procédure d'identification.
ScoreBoardFile logs/apache_status
La directive ScoreBoardFile est nécessaire sur certaines architectures pour créer un fichier servant à la communication entre des processus pères et des processus fils. La meilleure façon de savoir si votre système nécessite un tel fichier est d'exécuter Apache et de voir s'il crée le fichier mentionné dans la directive. Si votre système nécessite l'emploi de ce fichier, alors vous devez vous assurer que celui-ci ne peut être utilisé que par une et une seule invocation d'Apache.
Si vous devez utiliser un ScoreBoardFile, vous pourrez optimiser votre temps d'exécution en le plaçant sur un disque virtuel en RAM. Cependant, rappelez-vous que les mêmes recommandations sont à prendre en compte pour la position de ce fichier que pour la position des fichiers de trace quant à la securité.
A partir d'Apache 1.2 :
Les utilisateurs de Linux 1.x doivent pouvoir ajouter
-DHAVE_SHMGET
aux EXTRA_CFLAGS
dans
leur fichier de Configuration
. Ceci devrait
fonctionner sur certaines installations en 1.x, mais pas
forcément sur toutes.
Les utilisateurs de SVR4 devront considérer
l'opportunité d'ajouter -DHAVE_SHMGET
aux
EXTRA_CFLAGS
dans leur fichier de
Configuration
. Il semble que cela fonctionne, mais
nous n'avons pu le tester pour la version 1.2. (avant la
version 1.3b4, HAVE_SHMGET
devait suffire.)
Voir aussi : Arrêter et redémarrer Apache
ScriptInterpreterSource script
Cette directive sert, à partir de la version 1.3.5 d'Apache, à déterminer où trouver l'interpréteur employé pour exécuter les scripts CGI. La technique par défaut est de prendre l'interpréteur pointé par les caractères #! dans le script. En fixant ScriptInterpreterSource à registry, La table de registration de Windows sera employée pour chercher l'interpréteur, en prenant l'extension du fichier comme clé (par exemple .pl).
Le serveur règle la taille du tampon interne de TCP au nombre d'octets spécifié. Très utile pour augmenter les tailles par défaut dans le cas d'utilisation de liaisons haute vitesse (ex. des liaisons transcontinantales rapides).
La directive ServerAdmin définit l'adresse e-mail que le serveur inclut dans tout message d'erreur retourné au client.
Il peut être utile de dédier une adresse réservée à cet usage, par exemple :
ServerAdmin www-admin@foo.bar.com
car les utilisateur ne rappellent pas toujours dans leur message ce à propos de quoi ils interviennent!
La directive ServerAlias défini un nom secondaire pour un hôte, utilisable dans le contexte d'hôte virtuels nommés.
Voir aussi : Hôtes virtuels sur Apache
La directive ServerName définit le nom d'hôte du serveur ; celui-ci n'est utilisé que pour créer des URL de redirection. S'il n'est pas défini, alors le serveur tentera de le résoudre à partir de sa propre adresse IP ; cependant, cette résolution n'est pas d'une fiabilité absolue, ou peut résulter en un nom autre que le nom "souhaité". Par exemple :
ServerName www.wibble.com
peut être défini lorsque le nom canonique
(principal) de la machine actuelle est
monster.wibble.com
.
Si vous utilisez des hôtes virtuels
nommés, la directive ServerName
à l'intérieur d'une section <VirtualHost>
impose
que quel nom d'hôte doit apparaître dans
l'en-tête Host:
d'une requête pour
être associé à cet hôte virtuel.
Voir aussi : Apache et DNS documentation sur les hôtes virtuels
Apache
UseCanonicalName
NameVirtualHost
ServerAlias
La directive ServerPath définit le chemin d'accès servant de base pour les URL ciblant un hôte virtuel nommé.
Voir aussi : Hôtes virtuels sur Apache
ServerRoot /usr/local/apache
La directive ServerRoot définit le
répertoire dans lequel se situe le serveur. Typiquement,
ce répertoire contiendra les sous-répertoires
conf/
et logs/
. Les chemins
d'accès relatifs pour d'autres fichiers de configuration
seront considérés relativement à ce
répertoire.
Voir aussi les -d
options de httpd.
Voir aussi les trucs de sécurité pour plus d'informations sur comment correctment définir les droits d'accès à ServerRoot.
ServerSignature Off
La directive ServerSignature permet la configuration d'une
ligne de bas de page pour les documents
générés par le serveur (messages d'erreur,
liste des répertoire ftp, affichage de mod_info, ...)
L'utilité de l'emploi d'une telle ligne apparaît
dans la cas d'enchaînement de proxy, où
l'utilisateuir souvent n'a aucune possibilité de
déterminer quel élément de la chaîne
de proxies a produit un message d'erreur.
La valeur par défaut Off supprime la ligne
d'erreur (et est compatible avec le comportement d'Apache 1.2
et précédents). La valeur On ajoute
une ligne contenant la version du serveur, la valeur de ServerName de l'hôte virtuel et la
valeur EMail ajoute une référence
"mailto:" vers l'adresse ServerAdmin
du document demandé.
ServerTokens Full
ProductOnly
est
disponible à pertir de la version 1.3.12
Cette directive contrôle si le champ Server de l'en-tête de réponse qui est renvoyé aux clients inclut une description du type de système de du serveur ainsi que des informations sur les odules compilés.
ServerTokens Prod[uctOnly]
ServerTokens Min[imal]
ServerTokens OS
ServerTokens Full
(ou non
spécifié)Cette directive s'applique à la globalité du serveur et ne paut pas être activé ou désactivé sur la base d'hôtes virtuels.
ServerType standalone
La directive ServerType définit comment le serveur est exécuté par le système d'exploitation. Type peut prendre l'une des valeurs suivantes :
/etc/inetd.conf
/etc/rc.local
ou
/etc/rc3.d/...
.)Inetd est l'option la moins utilisée des deux. Pour chaque connexion http demandée, une nouvelle instance du serveur est créée ; une fois la connexion établie, ce programme tourne. Ceci implique un coût important en ressources pour chaque connexion, mais certains administrateurs préfèrent parfois ce mode pour des raisons de sécurité.
Standalone est l'option la plus fréquente pour la directive ServerType dans la mesure où ce dernier est de loin plus performant. Le serveur n'est démarré qu'une fois, et dessert toutes les connexions ultérieures. Si vous utilisez Apache sur un site très chargé, le mode standalone sera certainement le seul choix possible.
StartServers 5
La directive StartServers définit le nombre de processus fils créés dès le démarrage du serveur. Le nombre de ces processus étant contrôlé dynamiquement en fonction de la charge, il y a en général peu d'intérêt à modifier la valeur par défaut de ce paramètre.
Lorsque le serveur est exécuté sous Microsoft Windows, cette directive n'a aucun effet. Comme la version Windows d'Apache est écrite en multithread, un seul processus gère l'intégralité des requêtes. La directive ThreadsPerChild contrôle le nombre maximal de threads traitant les requêtes, ce qui a un effet similaire à la directive Unix StartServers
Voir aussi MinSpareServers et MaxSpareServers.
ThreadsPerChild 50
Cette directive indique au serveur combien de threads il doit lancer. Cela est équivalent au nombre maximum de connexions que le serveur peut traiter simultanément ; soyez sûr de vous et réglez le nombre suffisament haut si votre site est très fréquenté.
Cette directive n'a aucun effet sur les systèmes Unix. Les utilisateurs Unix regarderont les directives StartServers et MaxRequestsPerChild.
ThreadStackSize 65536
Cette directive indique la taille de la pile à utiliser pour les threads. Si vous rencontrer un problème de débordement de pile, vous devez augmenter cette valeur.
Cette directive n'a aucun effet sur les autres systèmes.
TimeOut
300
La directive TimeOut définit la temporisation courante pendant laquelle Apache attendra l'une de ces trois choses :
Nous prévoyons dans le futur de permettre une configuration individuelle de chacune de ces temporisations. La valeur par défaut était de 1200 avant la version 1.2, mais a été abaissée à 300 depuis, ce qui est déjà largement plus que nécessaire dans la plupart des situations. Il n'est cependant pas réglé plus bas car il peut exister (encore) des portions de code un peu "floues" par lesquelles le temporisateur n'est pas remis à zéro lors de la transmission d'un paquet.
UseCanonicalName on
Dans beaucoup de situations, Apache doit construire des URL
s'autoréférençant, autremnet dit,
des URL référençant le même serveur.
Avec la directive UseCanonicalName on
(dans les
versions d'Apache inférieures à 1.3) Apache
utilise les valeurs des directives ServerName et Port
pour construire un nom canonique du serveur. Ce nom est
utilisé pour toutes les URL autoréférentes
et pour les valeurs de SERVER_NAME
et
SERVER_PORT
pour les scripts CGI.
Avec UseCanonicalName off
, Apache formera les
URLS autoréférentes en utilisant le nom
d'hôte le numéro de port fourni par le client si
ceux ci sont fournis (sinon il utilisera le nom canonique). Ces
valeurs sont les mêmes qui sont employées pour
implémenter les hôtes virtuels
basés sur des noms, et sont disponibles pour les
mêmes clients. Les variable CGI SERVER_NAME
et SERVER_PORT
seront aussi construites à
partir des valeurs fournies par les clients.
Un exemple où cette directive est utile est le cas
d'un serveur intranet où des utilisateurs se connectent
à la machine en utilisant des noms courts tels que
www
. Vous noterez que si l'utilisateur tape un nom
court et que l'URL est un répertoire tel que
http://www/splat
, sans le caractère
oblique / final , Apache redirigera la requête vers
http://www.domain.com/splat/
. Si vous avez une
authentification active, lu'tilisateur devra s'authentifier
deux fois, (une première fois pour www
et
une deuxième fois pour An example where this may be
useful is on an intranet server where you have users connecting
to the machine using short names such as . You'll notice that
if the users type a www.domain.com
). Mais si la
directive UseCanonicalName
est à off,
Apache redirigera vers http://www/splat/
.
Il existe une troisième option,
UseCanonicalName DNS
, qui est prévu pour
être employé avec de nombreux hôtes virtuels
basés sur les adresses IP afin de supporter les clients
qui ne fournissent pas d'en-tête Host:
. Avec
cette option Apache effectue une résolution DNS inverse
sur l'adresse IP du serveur sur lequel le client se connecte
afin de travailler avec pour les URL
autoréférentes.
Attention : si les scripts CGI font des
suppositions sur les valeurs de SERVER_NAME
il
peuvent ne plus fonctionner avec cette option. Mais le script
CGI utilise uniquement SERVER_NAME
pour construire
des URL autoréférentes, il ne evrait y avoir
aucun problèmes.
Voir également : ServerName, Port
User
#-1
La directive User définit l'utilisateur
associé au serveur. Pour utiliser cette directive, un
serveur standalone devra être lancé sous
root
. utilisateurUnix est l'un parmi
:
L'utilisateur peut n'avoir aucun privilège ce qui lui
permet néanmoins de pouvoir avoir accès à
des fichiers qui ne sont pas sensés être visibles
du "reste du monde", mais pas d'exécuter du code qui ne
serait pas explicitement exécutable par l'utilisateur
associé à httpd. Il est d'ailleurs
recommandé de créer un utilisateur et un groupe
specialement pour exécuter le serveur. Certains
administrateurs utilisent souvent l'utilisateur
nobody
, mais ceci n'est pas toujours possible ou
souhaitable. Par exemple, le cache de mod_proxy quancd celui
est activé , doit être accessible à cette
utilisateur (voir la directive CacheRoot
).
Note : si vous démarrez le serveur
sous un utilisateur non-root, la tentative pour passer sous un
utilisateur de moindre privilège échouera, et le
serveur continuera à sexécuter sous l'utilisateur
d'origine. Si vous démarrez le serveur sous
root
, alors il sera normal que le processus
père continue à s'exécuter sous
root
.
Note spécifique : L'utilisation de cette directive dans une section <VirtualHost> nécessite un wrapper suEXEC correctement configuré. Lorsqu'elle est utilisée de cette façon dans une section <VirtualHost>, seul l'utilisateur associé à l'exécution des scripts CGI est affecté. Les requêtes non-CGI seront toujours traitées sous l'utilisateur défini dans la directive User de la section principale.
Sécurité : Ne
définissez pas l'utilisateur (ni le groupe) comme root
sauf si vous
savez exactement ce que vous faites, et si vous êtes
totalement conscients des risques qui sont encourus.
Les directives <VirtualHost> et </VirtualHost> sont utilisées pour "encapsuler" un groupe de directives qui s'appliquent à un hôte virtuel particulier. Toute directive autorisée dans un contexte "hôte virtuel" peut être présente. Lorsque le serveur reçoit une requête demandant un document spécifique sur un hôte virtuel spécifique, il utilise les directives de configuration explicitées dans la section <VirtualHost> correspondante. Adresse peut être :
Exemple :
<VirtualHost 10.1.2.3> ServerAdmin webmaster@host.foo.com DocumentRoot /www/docs/host.foo.com ServerName host.foo.com ErrorLog logs/host.foo.com-error_log TransferLog logs/host.foo.com-access_log </VirtualHost>
Chaque hôte virtuel doit être associé
à une adresse IP, à un numéro de port ou
à un nom d'hôte différents que celui
attribué au serveur, dans le dernier cas la machine du
serveur doit être configurée pour accepter des
paquets IP sur plusieurs adresses. (Si la machine ne dispose
pas de plusieurs interfaces réseau physiques, ceci peut
être obtenu par la commande ifconfig alias
(si votre OS l'accepte), ou par des patchs du kernel du type VIF (pour SunOS(TM)
4.1.x)).
Vous pouvez spécifier plus d'une adresse IP. Ceci peut être utile si une machine répond au même nom venant de deux différentes interfaces. Par exemple, si vous avez un hôte virtuel qui est accessible des hôtes à partir d'un réseau interne (intranet) et externe (internet). Exemple :
<VirtualHost 192.168.1.2 204.255.176.199>
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ServerAlias host
</VirtualHost>
Le nom prédéfini _default_
peut
être attribué auquel cas cet hôte virtuel
lira toutes les adresses IP qui ne sont pas explicitement
listées dans les autres hôtes virtuels
définis. En l'absence d'un hôte virtuel _default_,
la configuration serveur "principale", à savoir toutes
les définitions en dehors des sections VirtualHost,
seront utilisées si aucun hôte virtuel ne
reconnaît l'adresse.
Vous pouvez spécifier une commande :port
pour changer le port reconnu par l'hôte virtuel. Si aucun
port n'est mentionné, alors le port reconnu est par
défaut celui mentionné dans la dernière
directive de Port
de la
section principale qui précède. Vous pouvez
également spécifier :*
pour
reconnaître tous les ports à cette adresse. (Ceci
est conseillé lorsque l'hôte virtuel est le
_default_
.)
Sécurité: Voir les conseils de sécurité pour plus de détails sur les risques encourus si le répertoire contenant les fichiers de trace peut être écrit par un autre utilisateur que celui sous lequel est exécuté le serveur.
Note: L'utilisation de la directive <VirtualHost> n' affecte pas les adresses qu'écoute Apache. Vous devez vous assurer que les adresses définies pour les hôtes virtuels font aussi partie de l'ensemble des adresses écoutées par Apache et définies par des directives BindAddress ou Listen.
Voir aussi : Hôtes virtuels sur
Apache
Avertissement concernant DNS et
Apache
Configurer les ports et adresses
utilisés par Apache
Voir aussi : Comment fonctionnent les sections concernant les répertoires, chemins et fichiers pour une explication plus précise concernant la manière dont ces sections sont combinées lorsqu'une requête est traitée.