[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

Noyau d'Apache

Ces paramètres de configuration contrôlent les fonctionnalités premières d'Apache, et sont toujours disponibles.

Directives

Directive AcceptFilter

Syntaxe : AcceptFilter on|off
Défaut : AccceptFilter on
Contexte : server config
Statut : core

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.


Directive AccessConfig

Syntaxe : AccessConfig nomfichier|nomrépertoire
Défaut : AccessConfig conf/access.conf
Context: configuration serveur, hôtes virtuels
Statut : noyau

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.


Directive AccessFileName

Syntaxe : AccessFileName nomfichier [nomfichier] ...
Défaut : AccessFileName .htaccess
Context: configuration serveur, hôte virtuel
Statut : noyau
Compatibilité : AccessFileName ne peut accepter plusieurs noms de fichiers qu'à partir de la version 1.3 d'Apache

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


Directive AddDefaultCharset

Syntaxe : AddDefaultCharset On|Off|charset
Contexte : tous
Statut : noyau
Défaut : AddDefaultCharset Off
Compatibilité : AddDefaultCharset n'est disponible qu'à partir de la version 1.3.12

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.


Directive AddModule

Syntaxe : AddModule module [module] ...
Contexte : configuration serveur
Statut : noyau
Compatibilité : AddModule n'est disponible qu'à partir de la version 1.2 d'Apache

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.


Directive AllowOverride

Syntaxe : AllowOverride All|None|type de directive [type de directive] ...
Défaut : AllowOverride All All
Contexte : répertoire
Statut : noyau

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 :

AuthConfig
Autorise l'usage de la directive Authorization (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.).
FileInfo
Autorise l'usage de directives contrôlant l'accès aux types de documents (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, etc.).
Indexes
Autorise l'usage de directives contrôlant l'indexation des répertoires (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
Limit
Autorise l'usage de directives contrôlant les accès de certains hôtes (allow, deny et order).
Options
Autorise l'usage de directives contrôlant certaines fonctionnalités spécifiques des répertoires (Options et XBitHack).

Voir également : AccessFileName


Directive AuthName

Syntaxe : AuthName domaine-autorisé
Contexte : répertoire, .htaccess
Surcharge : AuthConfig
Statut : noyau

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.


Directive AuthType

Syntaxe : AuthType type
Contexte : répertoire, .htaccess
Surcharge : AuthConfig
Statut : noyau

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.


Directive BindAddress

Syntaxe : BindAddress *|addresse IP|nom de domaine
Défaut : BindAddress *
Contexte : configuration serveur
Statut : noyau

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


BS2000Account directive

Syntaxe : BS2000Account account
Défaut : none
Contexte : configuration serveur
Statut : noyau
Compatibilité : BS2000Account n'est valable que pour les machines BS2000, à partir de la version 1.3 d'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


Directive ClearModuleList

Syntaxe : ClearModuleList
Contexte : configuration serveur
Statut : noyau
Compatibilité : ClearModuleList n'est disponible qu'à partir de la version 1.2 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.


Directive ContentDigest

Syntaxe : ContentDigest on|off
Défaut : ContentDigest off
Contexte : configuration serveur, hôtes virtuels, répertoire, .htaccess
Surcharge : Options
Statut : expérimental

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.


Directive CoreDumpDirectory

Syntaxe : CoreDumpDirectory nomrépertoire
Défaut : même répertoire que ServerRoot
Contexte : configuration serveur
Statut : noyau

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.


Directive DefaultType

Syntaxe : DefaultType mime-type
Défaut : DefaultType text/html
Contexte : configuration serveur, hôtes virtuels, répertoire, .htaccess
Surcharge : FileInfo
Statut : noyau

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.


Directive <Directory>

Syntaxe : <Directory nomrépertoire> ... </Directory>
Contexte : configuration serveur, hôtes virtuels
Statut : noyau

<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 :

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.


Directive <DirectoryMatch>

Syntaxe : <DirectoryMatch regex> ... </DirectoryMatch>
Contexte : configuration serveur, hôtes virtuels
Statut : Core
Compatibilité : Disponible à partir de la version 1.3 d'Apache

<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


Directive DocumentRoot

Syntaxe : DocumentRoot directory-filename
Défaut : DocumentRoot /usr/local/apache/htdocs
Contexte : configuration serveur, hôtes virtuels
Statut : noyau

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.


EBCDICConvert

Syntaxe : EBCDICConvert On|Off[=direction] extension [extension] ...
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : noyau
Surcharge : FileInfo
Compatibilité : la conversion EBCDIC est disponible à partir de la version 1.3.19 d'Apache sur les plate-formes basées sur EBCDIC.

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


EBCDICConvertByType

Syntaxe : EBCDICConvertByType On|Off[=direction] mimetype [mimetype] ...
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : noyau
Surcharge : FileInfo
Compatibilité : la conversion EBCDIC est disponible à partir de la version 1.3.19 d'Apache sur les plate-formes basées sur 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

Syntaxe : EBCDICKludge On|Off
Default: EBCDICKludge Off
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : noyau
Surcharge : FileInfo
Compatibilité : EBCDICKludge est disponible à partir de la version 1.3.19 d'Apache sur les plate-formes basées sur EBCDIC. Il est désuet et sera abandonné dans les versions ultérieures.

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


Directive ErrorDocument

Syntaxe : ErrorDocument code d'erreur document
Contexte : configuration serveur, hôtes virtuels, répertoire, .htaccess
Statut : noyau
Surcharge : FileInfo
Compatibilité : Les contextes répertoire et .htaccess ne sont utilisables qu'à partir de la version 1.1 d'Apache.

Dans l'éventualité d'un problème ou d'une erreur, Apache peut exécuter l'une des quatre actions suivantes :

  1. sortie d'un message d'erreur simple standard
  2. sortie d'un message personnalisé
  3. redirection vers une URL locale pour traiter le problème (ou l'erreur)
  4. redirection vers une URL externe pour traiter le problème (ou l'erreur)

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.


Directive ErrorLog

Syntaxe : ErrorLog nomfichier
Défaut : ErrorLog logs/error_log (Unix)
Défaut : ErrorLog logs/error.log (Windows et OS/2)
Contexte : configuration serveur, hôtes virtuels
Statut : noyau

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:serviceservice 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.


Directive <Files>

Syntaxe : <Files nomfichier> ... </Files>
Contexte : configuration serveur, hôtes virtuels, .htaccess
Statut : noyau
Compatibilité : Disponible à partir de la version 1.2 d'Apache.

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


Directive <FilesMatch>

Syntaxe : <FilesMatch regex> ... </Files>
Contexte : configuration serveur, hôtes virtuels, .htaccess
Statut : noyau
Compatibilité : Disponible à partir de la version 1.3 d'Apache.

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


Directive Group

Syntaxe : Group groupeUnix
Défaut : Group #-1
Contexte : configuration serveur, hôte virtuel
Statut : noyau

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 :

un nom de groupe
se réfère à un groupe unix par son nom.
# suivi d'unnuméro de groupe.
se réfère à un groupe par son indice.

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.


Directive HostNameLookups

Syntaxe : HostNameLookups on | off | double
Défaut : HostNameLookups off
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : noyau
Compatibilité : double n'est disponible qu'à partir de la version 1.3 d'Apache.
Compatibilité : La valeur par défaut était 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".


Directive IdentityCheck

Syntaxe : IdentityCheck booléen
Défaut : IdentityCheck off
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : noyau

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.


<IfDefine> directive

Syntaxe : <IfDefine [!]nom-paramètre> ... </IfDefine>
Défaut : aucun
Contexte : tous
Statut : noyau
Compatibilité : <IfDefine> est disponible à partir de la version 1.3.1

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 :

Dans 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 -Dnom-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>

Directive <IfModule>

Syntaxe : <IfModule [!]nomModule> ... </IfModule>
Défaut : aucun
Contexte : tous
Statut : noyau
Compatibilité : IfModule n'est disponible qu'à partir de la version 1.2 d'Apache.

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.


Directive Include

Syntaxe : Include nomfichier
Contexte : configuration serveur
Statut : noyau
Compatibilité : Include n'est disponible qu'à partir de la version 1.3 d'Apache.

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.


Directive KeepAlive

Syntaxe : (Apache 1.1) KeepAlive requêtesMax
Défaut : (Apache 1.1) KeepAlive 5
Syntaxe : (Apache 1.2) KeepAlive on/off
Défaut : (Apache 1.2) KeepAlive On
Contexte : configuration serveur
Statut : noyau
Compatibilité : KeepAlive est disponible à partir de la version 1.1 d'Apache.

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

Voir aussi la directive MaxKeepAliveRequests.


Directive KeepAliveTimeout

Syntaxe : KeepAliveTimeout secondes
Défaut : KeepAliveTimeout 15
Contexte : configuration serveur
Statut : noyau
Compatibilité : KeepAliveTimeout est disponible à partir de la version 1.1 d'Apache.

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.


Directive <Limit>

Syntaxe : <Limit méthode méthode ... > ... </Limit>
Contexte : tous
Statut : noyau

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.

Directive <LimitExcept>

Syntaxe : <LimitExcept méthode [méthode] ... > ... </LimitExcept>
Contexte : tous
Statut : noyau
Compatibilité : disponible à partir de la version 1.3.5 d'Apache.

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


Directive LimitRequestBody

Syntaxe : LimitRequestBody octets
Défaut : LimitRequestBody 0
Contexte : configuration serveur, hôte virtuel, répertoire .htaccess
Statut : noyau
Compatibilité : LimitRequestBody est disponible à partir de la version 1.3.2.

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.


Directive LimitRequestFields

Syntaxe : LimitRequestFields number
Défaut : LimitRequestFields 100
Contexte : configuration serveur
Statut : noyau
Compatibilité : LimitRequestFields est disponible à partir de la version 1.3.2.

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.


Directive LimitRequestFieldsize

Syntaxe : LimitRequestFieldsize octets
Défaut : LimitRequestFieldsize 8190
Contexte : configuration serveur
Statut : noyau
Compatibilité : LimitRequestFieldsize est disponible à partir de la version 1.3.2.

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.


Directive LimitRequestLine

Syntaxe : LimitRequestLine octets
Défaut : LimitRequestLine 8190
Contexte : configuration serveur
Statut : noyau
Compatibilité : LimitRequestLine est disponible à partir de la version 1.3.2.

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.


Directive Listen

Syntaxe : Listen [adresseIp:]numéroPort
Contexte : configuration serveur
Statut : noyau
Compatibilité : Listen est disponible à partir de la version 1.1 d'Apache.

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


Directive ListenBacklog

Syntaxe : ListenBacklog backlog
Défaut : ListenBacklog 511
Contexte : configuration serveur
Statut : noyau
Compatibilité : ListenBacklog n'est disponible qu'à partir de la version 1.2.0 d'Apache.

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).


Directive <Location>

Syntaxe : <Location URL> ... </Location>
Contexte : configuration serveur, hôtes virtuels
Statut : noyau
Compatibilité : Location est disponible à partir des versions 1.1 d'Apache.

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.


Directive <LocationMatch>

Syntaxe : <LocationMatch regex> ... </LocationMatch>
Contexte : configuration serveur, hôte virtuel
Statut : noyau
Compatibilité : Location est disponible à partir de la version 1.3 d'Apache.

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".

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.

Directive LockFile

Syntaxe : LockFile nomfichier
Défaut : LockFile logs/accept.lock
Contexte : configuration serveur
Statut : noyau

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.


Directive LogLevel

Syntaxe : LogLevel niveau
Défaut : LogLevel error
Contexte : configuration serveur, hôtes virtuels
Statut : noyau
Compatibilité : LogLevel est disponible à partir de la version 1.3.

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é.


Directive MaxClients

Syntaxe : MaxClients nombre
Défaut : MaxClients 256
Contexte : configuration serveur
Statut : noyau

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.


Directive MaxKeepAliveRequests

Syntaxe : MaxKeepAliveRequests nombre
Défaut : MaxKeepAliveRequests 100
Contexte : configuration serveur
Statut : noyau
Compatibilité : Uniquement à partir de la version 1.2 d'Apache.

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


Directive MaxRequestsPerChild

Syntaxe : MaxRequestsPerChild nombre
Défaut : MaxRequestsPerChild 0
Contexte : configuration serveur
Statut : noyau

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.


Directive MaxSpareServers

Syntaxe : MaxSpareServers nombre
Défaut : MaxSpareServers 10
Contexte : configuration serveur
Statut : noyau

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.


Directive MinSpareServers

Syntaxe : MinSpareServers nombre
Défaut : MinSpareServers 5
Contexte : configuration serveur
Statut : noyau

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.


Directive NameVirtualHost

Syntaxe : NameVirtualHost addr[:port]
Contexte : configuration serveur
Statut : noyau
Compatibilité : NameVirtualHost n'est disponible qu'à partir de la version 1.3 d'Apache.

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.

Voir aussi : Hôtes virtuels sur Apache

Directive Options

Syntaxe : Options [+|-]option [+|-]option ...
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Surcharge: Options
Statut : noyau

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 :

All
toutes options sauf MultiViews.
ExecCGI
L'exécution des scripts CGI est autorisée.
FollowSymLinks
Le serveur est autorisé à suivre les liens symboliques dans ce répertoire.

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

Includes
Les inclusions par Server-Side-Include sont permises.
IncludesNOEXEC
Les SSI sont autorisés, mais pas la commande #exec ni #include des scripts CGI.
Indexes
Si une URL requise pointe sur un répertoire, et aucun fichier défini par DirectoryIndex (ex. index.html) n'existe dans ce répertoire, alors le serveur retourne une liste formatée du contenu du répertoire.
MultiViews
Un contenu négocié en MultiViews est permis.
SymLinksIfOwnerMatch
Le serveur ne suivra les liens symboliques uniquement si le fichier visé ou le répertoire visé appartiennent au même utilisateur que le lien lui-même.

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.


Directive PidFile

Syntaxe : PidFile filename
Défaut : PidFile logs/httpd.pid
Contexte : configuration serveur
Statut : noyau

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.


Directive Port

Syntaxe : Port numéro
Défaut : Port 80
Contexte : configuration serveur
Statut : noyau

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).

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.


Directive require

Syntaxe : require nomEntite Entite Entite...
Contexte : répertoire, .htaccess
Surcharge: AuthConfig
Statut : noyau

Cette directive choisi quels utilisateurs autorisés peuvent accéder à un répertoire. Les syntaxes valides sont :

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).


Directive ResourceConfig

Syntaxe : ResourceConfig nomfichier
Défaut : ResourceConfig conf/srm.conf
Contexte : configuration serveur, hôte virtuel
Statut : noyau

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.


Directive RLimitCPU

Syntaxe : RLimitCPU # ou 'max' [# ou 'max']
Défaut : Non précisé; utilise le défaut du système d'exploitation
Contexte : configuration serveur, hôte virtuel
Statut : noyau
Compatibilité : RLimitCPU n'est disponible qu'à partir de la version 1.2 d'Apache

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.


Directive RLimitMEM

Syntaxe : RLimitMEM # ou 'max' [# ou 'max']
Défaut : Non précisé ; utilise le défaut du système d'exploitation
Contexte : configuration serveur, hôte virtuel
Statut : noyau
Compatibilité : RLimitMEM is only available in Apache 1.2 and later

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.


Directive RLimitNPROC

Syntaxe : RLimitNPROC # ou 'max' [# ou 'max']
Défaut : Unset; uses operating system defaults
Contexte : configuration serveur, hôte virtuel
Statut : noyau
Compatibilité : RLimitNPROC n'est disponible qu'à partir de la version 1.2 d'Apache

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.


Directive Satisfy

Syntaxe : Satisfy 'any' ou 'all'
Défaut : Satisfy all
Contexte : répertoire, .htaccess
Statut : noyau
Compatibilité : Satisfy n'est disponible qu'à partir de la version 1.2 d'Apache

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.

Voir aussi Require et Allow.


Directive ScoreBoardFile

Syntaxe : ScoreBoardFile nomfichier
Défaut : ScoreBoardFile logs/apache_status
Contexte : configuration serveur
Statut : noyau

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 directive

Syntaxe : ScriptInterpreterSource registry|script
Défaut : ScriptInterpreterSource script
Contexte : répertoire, .htaccess
Statut : noyau (seulement sur Windows)

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).


Directive SendBufferSize

Syntaxe : SendBufferSize octets
Contexte : configuration serveur
Statut : noyau

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).


Directive ServerAdmin

Syntaxe : ServerAdmin adresseEMail
Contexte : configuration serveur, hôte virtuel
Statut : noyau

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!


Directive ServerAlias

Syntaxe : ServerAlias hôte1 hôte2 ...
Contexte : hôte virtuel
Statut : noyau
Compatibilité : ServerAlias est disponible à partir de la version 1.1 d'Apache

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


Directive ServerName

Syntaxe : ServerName nom de domaine entièrement qualifié
Contexte : configuration serveur, hôte virtuel
Statut : noyau

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


Directive ServerPath

Syntaxe : ServerPath chemin
Contexte : hôte virtuel
Statut : noyau
Compatibilité : ServerPath est disponible à partir de la version 1.1 d'Apache.

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


Directive ServerRoot

Syntaxe : ServerRoot nomrépertoire
Défaut : ServerRoot /usr/local/apache
Contexte : configuration serveur
Statut : noyau

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.


Directive ServerSignature

Syntaxe : ServerSignature On|Off|EMail
Défaut : ServerSignature Off
Contexte : configuration serveur, hôte virtuel, répertoire, .htaccess
Statut : noyau
Compatibilité : ServerSignature est disponible à partir de la version 1.3.

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é.


Directive ServerTokens

Syntaxe : ServerTokens Minimal|ProductOnly|OS|Full
Défaut : ServerTokens Full
Contexte : configuration serveur
Statut : noyau
Compatibilité : ServerTokens est disponible à partir de la version 1.3 d'Apache. Le mot clé 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]
Le serveur renvoie par exemple : Server: Apache
ServerTokens Min[imal]
Le serveur renvoie par exemple : Server: Apache/1.3.0
ServerTokens OS
Le serveur renvoie par exemple : Server: Apache/1.3.0 (Unix)
ServerTokens Full (ou non spécifié)
Le serveur renvoie par exemple : Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2

Cette directive s'applique à la globalité du serveur et ne paut pas être activé ou désactivé sur la base d'hôtes virtuels.


Directive ServerType

Syntaxe : ServerType type
Défaut : ServerType standalone
Contexte : configuration serveur
Statut : noyau

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 :

inetd
Le serveur sera exécuté à partir du processus system inetd ; la commande nécessaire au démarrage du serveur devra être ajoutée au fichier /etc/inetd.conf
standalone
Le serveur est lancé en tant que démon ; la commande de démarrage du serveur sera ajoutée aux scripts de démarrage du système d'exploitation. (/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.


Directive StartServers

Syntaxe : StartServers nombre
Défaut : StartServers 5
Contexte : configuration serveur
Statut : noyau

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.


Directive ThreadsPerChild

Syntaxe : ThreadsPerChild nombre
Défaut : ThreadsPerChild 50
Contexte : configuration serveur
Statut : noyau (Windows)
Compatibilité : Disponible seulement à partir de la version 1.3 pour Windows d'Apache

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.


Directive ThreadStackSize

Syntaxe : ThreadStackSize nombre
Défaut : ThreadStackSize 65536
Contexte : configuration serveur
Statut : noyau (NetWare)
Compatibilité : disponible à partir de la version d'Apache 1.3 sur Netware.

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.


Directive TimeOut

Syntaxe : TimeOut nombre
Défaut : TimeOut 300
Contexte : configuration serveur
Statut : noyau

La directive TimeOut définit la temporisation courante pendant laquelle Apache attendra l'une de ces trois choses :

  1. Le temps total de réception d'une requête GET.
  2. Le temps entre la réception de paquets TCP lors d'une requête POST ou PUT.
  3. Le temps entre deux acquittements lors de la transmission de paquets TCP de réponse.

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 directive

Syntaxe : UseCanonicalName on|off|dns
Défaut : UseCanonicalName on
Contexte : configuration serveur, hôte virtuel, répertoire
Surcharge : Options
Compatibilité : UseCanonicalName est disponible à partir de la verion 1.3

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


Directive User

Syntaxe : User utilisateurUnix
Défaut : User #-1
Contexte : configuration serveur, hôte virtuel
Statut : noyau

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 :

un nom d'utilisateur
se réfère à un utilisateur déclaré du système.
# suivi d'un numéro d'utilisateur.
se réfère à l'utilisateur déclaré du système portant ce numéro.

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.


Directive <VirtualHost>

Syntaxe : <VirtualHost adresse[:port] ...> ... </VirtualHost>
Contexte : configuration serveur
Statut : Core
Compatibilité : la "virtualisation" d'hôtes non basés sur l'adressage IP n'est disponible qu'à partir de la version 1.1 d'Apache
Compatibilité : le support d'adresses multiples n'est disponible qu'à partir de la version 1.2 d'Apache

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.


Apache HTTP Server Version 1.3

Index Home