Configuration de Apache 2

1. Directive AllowOverride

Active les fichiers .htaccess

Syntaxe :

AllowOverride All|None|type directive [type directive] ...

Défaut :

AllowOverride All

Ne peut être utilisée que dans les sections <Directory> définies sans expressions rationnelles.

?AllowOverride All::active les fichiers .htaccess!!
?AllowOverride None::les fichiers .htaccess sont totalement ignorés!!

2. Directive <Directory>

Syntaxe :

<Directory chemin répertoire>
 ... 
</Directory>

Les balises <Directory> et </Directory> permettent de regrouper un ensemble de directives qui ne s'appliquent qu'au répertoire précisé, à ses sous-répertoires, et aux fichiers situés dans ces sous-répertoires.

Toute directive autorisée dans un contexte de répertoire peut être utilisée.

?chemin répertoire::chemin absolu d'un répertoire, éventuellement avec des jokers :
? ?::correspond à un caractère quelconque!!
? *::correspond à toute chaîne de caractères.
? []::Les intervalles de caractères sont autorisés.

Aucun caractère générique ne peut remplacer le caractère /, si bien que :

  • l'expression <Directory /*/public_html> ne conviendra pas pour le chemin * /home/user/public_html,
  • alors que <Directory /home/*/public_html> conviendra.

Exemple :

<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>

!!

?expressions rationnelles::peuvent aussi être utilisées en ajoutant le caractère ~.

Par exemple :

<Directory ~ "^/www/[0-9]{3}">

pourra correspondre à tout répertoire situé dans /www/ et dont le nom se compose de trois chiffres.!!

Notez que pour Apache, la politique d'accès par défaut dans les sections <Directory /> est Allow from All. Ceci signifie qu'Apache va servir tout fichier correspondant à une URL. Il est recommandé de modifier cette situation à l'aide d'un bloc du style

<Directory />
Order Deny,Allow
Deny from All
</Directory>

puis d'affiner la configuration pour les répertoires que vous voulez rendre accessibles.

3. Directive DocumentRoot

?DocumentRoot chemin_répertoire::Définit le répertoire à partir duquel httpd va servir les fichiers.!!
?chemin_répertoire::ne doit pas comporter de slash terminal

::Le chemin de l'URL sera ajouté par le serveur à la racine des documents. ::Si chemin_répertoire n'est pas un chemin absolu, il est considéré comme relatif au chemin défini par la directive ServerRoot.!!

Par exemple, avec :

DocumentRoot /usr/web

un accès à http://www.my.host.com/index.html se réfère à /usr/web/index.html.

4. Directive Include

Inclut d'autres fichiers de configuration dans un des fichiers de configuration du serveur

Syntaxe

Include chemin fichier|chemin répertoire

On peut utiliser des jokers dans le nom du fichier ou la partie répertoire pour inclure plusieurs fichiers en une seule fois.

Eviter de pointer vers un répertoire. Utiliser plutôt la syntaxe avec caractères génériques vue ci-dessous pour inclure des fichiers dont le nom correspond à un modèle particulier, comme *.conf par exemple.

Le chemin fichier spécifié peut être soit absolu, soit relatif au répertoire défini par la directive ServerRoot.

Exemples :

Include /usr/local/apache2/conf/ssl.conf
Include /usr/local/apache2/conf/vhosts/*.conf

ou encore, avec des chemins relatifs au répertoire défini par la directive ServerRoot :

Include conf/ssl.conf
Include conf/vhosts/*.conf

5. Directive Options

La directive Options permet de définir les fonctionnalités de serveur disponibles pour un répertoire particulier.

?All::Toutes les options exceptée MultiViews. (configuration par défaut)!!
?None::aucune fonctionnalité spécifique n'est activée!!
?FollowSymLinks::Le serveur va suivre les liens symboliques dans le répertoire concerné.!!
?Indexes::Génère automatiquement un index si aucun n'est défini pour ce répertoire.!!
?MultiViews::vues multiples autorisées.!!
?ExecCGI::L'exécution de scripts CGI à l'aide du module mod_cgi est permise.!!
?Includes::Les inclusions côté serveur (SSI) à l'aide du module mod_include sont autorisées.!!
?IncludesNOEXEC::Les inclusions côté serveur (SSI) sont permises, mais #exec cmd et #exec cgi sont désactivées.!!
?SymLinksIfOwnerMatch::Le serveur ne suivra que les liens symboliques qui renvoient vers un fichier ou un répertoire dont le propriétaire est le même que celui du lien.!!

Les options FollowSymLinks et SymLinksIfOwnerMatch ne fonctionnent que dans les sections <Directory> ou les fichiers .htaccess.

On peut ajouter ou retrancher des options à celles déjà existantes en les faisant précéder de + ou -

Par exemple :

<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>

<Directory /web/docs/spec>
Options +Includes -Indexes
</Directory>

Dans ce cas,, les options FollowSymLinks et Includes seront prises en compte pour le répertoire /web/docs/spec.

6. Directive Require

Cette option remplace les anciennes options order et allow!!

6.1 Require [all|local]

?Require all granted::Accès autorisé dans tous les cas!!
?Require all denied::Accès refusé dans tous les cas!!
?Require local::Ne permet l'accès au serveur qu'aux clients locaux, c'est-à-dire que :
  • l'adresse IP du client correspond à 127.0.0.0/8
  • ou à ::1
  • ou les adresses IP du client et du serveur sont identiques!!

6.2 Require [host|ip]

Contrôle l'accès au serveur en fonction du nom d'hôte ou de l'adresse IP du client distant.

?Require host <nom d'hôte>::Accès autorisé pour ce nom d'hôte
  • exemple : Require host example.org!!
?Require host <nom de domaine>Accès autorisé pour ce domaine (éventuellement partiel)
  • exemples :
    • Require host .net
    • Require host .net example.edu!!
?Require ip <ip complète>::Accès autorisé pour cette adresse
  • exemple : Require ip 10 172.20 192.168.2!!
?Require ip <ip partielle>::Accès autorisé pour cette plage d'adresses!!
?Require ip <paire réseau/masque de sous-réseau>::Accès autorisé pour ce réseau!!

6.3 Require [user|group|valid-user]

?Require user identifiant utilisateur [identifiant utilisateur] …::Seuls les utilisateurs spécifiés sont autorisés!!
?Require group nom groupe [nom groupe] …::Seuls les utilisateurs appartenant aux groupes spécifiés sont autorisés!!
?Require valid-user::Tous les utilisateurs valides sont autorisés!!

6.4 Directive ServerAdmin

Adresse électronique que le serveur inclut dans les messages d'erreur envoyés au client

Syntaxe :

ServerAdmin adresse_électronique|URL

Eviter d'utiliser une URL, préférer une adresse mail.

6.5 Directive ServerAlias

Autres noms d'un serveur utilisables pour atteindre des serveurs virtuels à base de nom

Syntaxe :

ServerAlias nom serveur [nom serveur] ...

La directive ServerAlias peut contenir des caractères génériques, si nécessaire.

<VirtualHost *:80>
ServerName serveur.domaine.com
ServerAlias serveur serveur2.domaine.com serveur2
ServerAlias *.example.com
UseCanonicalName Off
# ...
</VirtualHost>

6.6 Directive ServerName

Nom d'hôte et port que le serveur utilise pour s'authentifier lui-même

Syntaxe :

ServerName [protocole://]nom de domaine entièrement qualifié[:port]

6.7 Directive ServerRoot

Racine du répertoire d'installation du serveur

Syntaxe :

ServerRoot chemin de répertoire

6.8 Directive <VirtualHost>

Contient des directives qui ne s'appliquent qu'à un nom d'hôte spécifique ou à une adresse IP

Syntaxe :

<VirtualHost adresse_IP[:port] [adresse_IP[:port]] ...> ... </VirtualHost>
?<VirtualHost adresse_IP>::adresse IP du serveur virtuel!!
?<VirtualHost *>::en combinaison avec Name, intercepte toutes les adresses IP!!
?<VirtualHost _default_>::intercepte les adresses IP qui ne correspondent à aucun serveur virtuel.!!
?:port::port du serveur virtuel. S'il n'est pas spécifié, sa valeur par défaut correspond à celle qui est définie par la dernière directive Listen du serveur principal.!!
?:*::accepte tous les ports associés à l'adresse du serveur virtuel!!

Exemple

<VirtualHost 10.1.2.3:80>
ServerAdmin webmaster@host.example.com
DocumentRoot /www/docs/host.example.com
ServerName host.example.com
ErrorLog logs/host.example.com-error_log
TransferLog logs/host.example.com-access_log
</VirtualHost>

Les adresses IPv6 doivent être entourées de crochets car dans le cas contraire, un éventuel port optionnel ne pourrait pas être déterminé. Voici un exemple de serveur virtuel avec adresse IPv6 :

<VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
ServerAdmin webmaster@host.example.com
DocumentRoot /www/docs/host.example.com
ServerName host.example.com
ErrorLog logs/host.example.com-error_log
TransferLog logs/host.example.com-access_log
</VirtualHost>

Tout bloc <VirtualHost> doit comporter une directive ServerName. Dans le cas contraire, le serveur virtuel héritera de la valeur de la directive ServerName issue de la configuration du serveur principal.

7. Désinstallation

8. Voir aussi


Navigation

éditer cette page