Serveur Apache HTTP Version 2.4
Cette page pourrait se r�sumer ainsi : configurez le serveur HTTP Apache de fa�on � ce qu'il n'ait pas besoin de r�solution DNS pour interpr�ter les fichiers de configuration. Si httpd doit effectuer des r�solutions DNS pour interpr�ter les fichiers de configuration, votre serveur pourra pr�senter des probl�mes de fiabilit� (en d'autres termes, il est possible qu'il refuse de d�marrer), ou d'attaques par d�ni ou usurpation de service (y compris l'attribution de requ�tes � un serveur virtuel autre que le serveur virtuel voulu).
# Ceci est un exemple de mauvaise configuration ; ne l'utilisez pas comme base # de configuration <VirtualHost www.example.dom> ServerAdmin [email protected] DocumentRoot "/www/example" </VirtualHost>
Pour fonctionner correctement, le serveur a absolument besoin de deux
informations � propos de chaque serveur virtuel : le nom du serveur
d�fini par la directive ServerName
, et au moins une adresse IP �
laquelle le serveur va se rattacher et r�pondre. L'exemple ci-dessus
ne comporte pas d'adresse IP, si bien que httpd devra utiliser le
DNS pour trouver l'adresse IP de www.example.dom
. Si pour
une raison quelconque, le DNS n'est pas disponible au moment o�
votre serveur interpr�te son fichier de configuration, ce serveur
virtuel ne sera pas pris en compte dans la
configuration. Il sera incapable de
r�pondre � toute requ�te pour ce serveur virtuel.
Supposons que l'adresse de www.example.dom
soit
192.0.2.1, et examinons cet extrait de configuration :
# Ceci est un exemple de mauvaise configuration ; ne l'utilisez pas comme base # de configuration <VirtualHost 192.0.2.1> ServerAdmin [email protected] DocumentRoot "/www/example" </VirtualHost>
Cette fois, httpd doit effectuer une recherche DNS inverse pour
trouver le nom ServerName
de ce serveur virtuel. Si
cette recherche inverse �choue, le serveur virtuel sera
partiellement d�sactiv�. Si le serveur
virtuel est � base de nom, il sera en fait totalement d�sactiv�,
mais s'il est � base d'adresse IP, il fonctionnera probablement.
Cependant, httpd �chouera s'il doit g�n�rer une URL compl�te pour
le serveur qui inclut ce nom de serveur (comme dans le cas d'une
redirection).
Voici un extrait de configuration qui permet d'�viter ces deux types de probl�mes :
<VirtualHost 192.0.2.1> ServerName www.example.dom ServerAdmin [email protected] DocumentRoot "/www/example" </VirtualHost>
Consid�rons cet extrait de configuration :
<VirtualHost www.example1.dom> ServerAdmin [email protected] DocumentRoot "/www/example1" </VirtualHost> <VirtualHost www.example2.dom> ServerAdmin [email protected] DocumentRoot "/www/example2" </VirtualHost>
Supposons que vous ayez assign� 192.0.2.1 �
www.example1.dom
et 192.0.2.2 � www.example2.dom
. En
outre, supposons que example1.dom
g�re son propre DNS. Avec
cette configuration, example1.dom
sera en mesure de
d�tourner tout trafic destin� � example2.dom
. Pour y
parvenir, tout ce qu'ils ont � faire consiste �
assigner 192.0.2.2 �
www.example1.dom
. Comme ils g�rent leur propre DNS, vous ne
pouvez pas les emp�cher de faire pointer l'enregistrement
www.example1.dom
vers l'adresse qu'ils veulent.
Les requ�tes � destination de 192.0.2.2 (y compris toutes celles
o� l'utilisateur � tap� une URL de la forme
http://www.example2.dom/quelquepart
), seront toutes servies
par le serveur virtuel example1.dom
. Une meilleur
compr�hension de la raison pour laquelle ceci peut se produire
n�cessite une discussion plus approfondie � propos de la mani�re
dont httpd associe les requ�tes entrantes aux diff�rents serveurs
virtuels qui vont les servir. Un document de base d�crivant ceci est disponible.
Le support des
serveurs virtuels � base de nom oblige httpd �
conna�tre la/les adresse(s) IP de l'h�te sur
lequel httpd
s'ex�cute. Pour obtenir cette
adresse, soit il utilise la directive ServerName
globale (si elle est pr�sente),
soit il fait appel � la fonction C gethostname
(qui
doit renvoyer le m�me nom que la commande shell "hostname"). Il
effectue ensuite une recherche DNS sur cette adresse. Pour le
moment, il n'existe aucun moyen d'�viter cette recherche DNS.
Si vous craignez que cette recherche DNS �choue parce que votre
serveur DNS est arr�t�, vous pouvez ins�rer le nom d'h�te dans le
fichier /etc/hosts
(o� il est probablement d�j�
enregistr� afin que la machine d�marre correctement). Assurez-vous
ensuite que la machine est configur�e pour utiliser
/etc/hosts
dans le cas o� la recherche DNS �choue.
Suivant le syst�me d'exploitation que vous utilisez, vous y
parviendrez en �ditant /etc/resolv.conf
, ou
/etc/nsswitch.conf
.
Si votre serveur n'a aucune autre raison d'effectuer des
recherches DNS, vous pouvez d�finir la variable d'environnement
HOSTRESORDER
� "local", et vous serez alors en mesure
d'ex�cuter httpd. Tout d�pend du syst�me d'exploitation et des
biblioth�ques de r�solution de noms que vous utilisez. Elle affecte
aussi les programmes CGI, � moins que vous n'utilisiez
mod_env
pour contr�ler l'environnement. Il est
conseill� de consulter les pages de manuel ou les FAQs de votre
syst�me d'exploitation.
VirtualHost
Listen
ServerName
explicite
<VirtualHost
_default_:*>
qui n'a aucune page � servir