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