[RESOLU] Virtual Host non pris en compte

hAz4rd0u$
Invité n'ayant pas de compte PHPfrance

15 sept. 2014, 11:23

Bonjour à tous,

J'ai configuré apache et compagnie sur un serveur web pour lequel j'ai acheté un nom de domaine. Mon fichier resolv.conf du serveur contient bien l'ip du serveur de dns, le fichier host du serveur contient bien les alias pointant sur l'ip du serveur :

Code : Tout sélectionner

127.0.0.1 localhost.localdomain localhost 37.59.40.46 ns3000497.ip-37-59-40.eu ns3000497 abracadabook.fr abracadabook.com\ www.abracadabook.fr 2001:41D0:8:4F2e::1 ns3000497.ip-37-59-40.eu ns3000497 abracadabook.fr abracada\ book.com www.abracadabook.fr # The following lines are desirable for IPv6 capable hosts #(added automatically by netbase upgrade) ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Mon fichier de virtualhost : (mon site est activé et les ports sont correctement configurés)

Code : Tout sélectionner

<VirtualHost *:80> ServerName www.abracadabook.fr ServerAlias abracadabook.fr *.abracadabook.fr DocumentRoot /home/abracadabook/www/ <Directory /home/abracadabook/www/> Options -Indexes AllowOverride All </Directory> </VirtualHost>
Lorsque j'essaie d'accéder au serveur via le domaine abracadabook.fr, la page ne se charge pas. Pareil si je place www. avant. Si par contre je saisis l'ip de mon serveur, je tombe sur la page d'index d'apache. (It works !)
J'ai configuré un lien dans le fichier host de ma machine avec laquelle je souhaite accéder au serveur, depuis lorsque j'accède à abracadabook.fr cela fonctionne et mon documentroot est bien pris en compte. Je ne parviens pas à trouver la logique derrière ce problème, tout étant pour moi configuré correctement, sauf erreur de ma part.

D'avance merci.

ViPHP
ViPHP | 5924 Messages

15 sept. 2014, 12:01

Bonjour,
J'ai configuré apache et compagnie sur un serveur web pour lequel j'ai acheté un nom de domaine. Mon fichier resolv.conf du serveur contient bien l'ip du serveur de dns, le fichier host du serveur contient bien les alias pointant sur l'ip du serveur
Je vais tenter d'expliquer le fonctionnement des fichiers /etc/hosts car il me semble qu'il y ait une confusion.

Revenons à la question de base : Comment traduit-on un nom de domaine (www.example.net) en IP (192.0.10.20 ou 2001:db8::6:7:8:9) ?
1/ Majoritairement par le système DNS :
* Ta machine cliente va lire son /etc/resolv.conf pour prendre connaissance de son serveur DNS récursif (en général géré par le FAI)
* Elle envoie ensuite à ce serveur une requête pour demander à quelle IP correspond le nom de domaine
* En général ce serveur n'a pas la réponse, il va commencer une résolution en cascade jusqu'au serveur de la personne qui gère le domaine
* La personne qui gère le domaine a donc pris le soin, d'une part de faire tourner un serveur DNS (Bind, NSD, PowerDNS, Knot, etc) sur une machine, d'autre part de l'avoir annoncé à son bureau d'enregistrement de son domaine
* Une fois que la résolution aboutit, la machine cliente a obtenu l'IP du serveur à atteindre par le serveur DNS du propriétaire du domaine
* Vulgarisation un peu plus complète : http://www.commentcamarche.net/contents ... de-domaine
2/ Alternativement par des règles de résolution statiques telles que le /etc/hosts :
* Dans ce cas, on a explicitement indiqué sur la machine cliente que pour une liste de noms de domaines définie, cette machine ne doit pas faire de résolution DNS mais doit utiliser les entrées définies statiquement
* Considérons que la machine client a une correspondance www.example.net -> 192.0.10.20 dans ce fichier
* Lorsqu'elle va essayer d'accéder à la page, elle va détecter qu'elle possède déjà une entrée dans son /etc/hosts
* La machine cliente ne va donc faire aucune résolution DNS mais utiliser son entrée statique pour accéder au service

Notons que dans cette description :
* A aucun moment on n'a parlé du /etc/resolv.conf du serveur, ce fichier servant dans les cas où le serveur souhaite accéder à un domaine précis
* A aucun moment on n'a parlé du /etc/hosts du serveur, ce fichier servant également dans les cas où le serveur souhaite accéder à un domaine précis
* Les fichiers /etc/resolv.conf et /etc/hosts sont indépendants, dans la mesure où soit tu utilises l'un (résolution DNS), soit tu utilises l'autre (résolution statique)

Cordialement

hAz4rd0$
Invité n'ayant pas de compte PHPfrance

15 sept. 2014, 12:22

Je comprends bien. Merci pour ces précisions. Le problème viendrait donc du fait que mes fichiers de virtual host ne sont pas pris en compte. Le but ici est de pouvoir accéder au dossier /home/abracadabook/www/ en tapant l'url *.abracadabook.fr ou abracadabook.fr. Actuellement il n'est pas possible d'accéder au serveur par ces noms de domaines malgré le fait que les dns soient bien associées à l'adresse ip du serveur et le site abracadabook.fr bien activé sur apache2 et le fihcier de vhost correctement configuré (j'ai lancé la commande apachectl -S et la syntaxe du fichier vhost est bonne. Même lorsque je tape l'ip du serveur il est impossible de charger la page.

ViPHP
ViPHP | 5924 Messages

15 sept. 2014, 14:56

Je comprends bien. Merci pour ces précisions. Le problème viendrait donc du fait que mes fichiers de virtual host ne sont pas pris en compte.
Non, ce n'est pas du tout ça, merci de bien relire l'explication.
Tel que le problème a été décrit initialement :
* Si la machine cliente ne contient pas l'entrée "abracadabook.fr" dans son /etc/hosts, le site est inaccessible
* Si la machine cliente contient une entrée "abracadabook.fr" dans son /etc/hosts, le site est fonctionnel
Dans ce cas, le problème est au niveau DNS et absolument pas au niveau HTTP.
Le but ici est de pouvoir accéder au dossier /home/abracadabook/www/ en tapant l'url *.abracadabook.fr ou abracadabook.fr. Actuellement il n'est pas possible d'accéder au serveur par ces noms de domaines malgré le fait que les dns soient bien associées à l'adresse ip du serveur
Comment es-tu sûr que les DNS soient configurés correctement ? Comment as-tu vérifié ?
A ce que je vois, un dig sur le domaine renvoie l'ip 37.59.40.46 :

Code : Tout sélectionner

$ dig +short abracadabook.fr 37.59.40.46
Mais il est tout à fait possible que ce ne soit pas le cas chez toi, en particulier si une ancienne valeur a été gardé en cache DNS. Dans ce cas le problème sera résolu lorsque les entrées du cache arriveront à expiration et les serveurs DNS récursifs iront chercher une version à jour.
Même lorsque je tape l'ip du serveur il est impossible de charger la page.
Il est impossible de charger la page où bien la page chargée est la page par défaut de apache "It works" ? Dans ce second cas, cela signifie que cela marche, seulement lorsque spécifie l'ip directement, c'est la page par défaut de apache qui est chargée et non un virtualhost particulier.

Dans tous les cas, il faut être clair sur le diagnostique du problème. Tel que le problème a été décrit initialement c'est le DNS qui est en cause, auquel cas il faut vérifier ce qui est effectivement renvoyé par les serveurs DNS avant d'arriver à une conclusion.

Cordialement

hAz4rd0u$
Invité n'ayant pas de compte PHPfrance

15 sept. 2014, 15:24

Bonjour,

Le problème venait effectivement apparemment des dns. J'ai changé les dns secondaires et lors d'un check de dns, le domaine est lié à l'ip sauf sur certains serveurs de dns (je ne sais pourquoi).
https://www.whatsmydns.net/#A/abracadabook.fr

J'ai également suivi le tutoriel suivant pour configurer les dns d'un serveur kimsufi : http://www.memoinfo.fr/configurer-serve ... i-ovh.html

hAz4rd0u$
Invité n'ayant pas de compte PHPfrance

15 sept. 2014, 17:32

Il s'avère que je n'avais pas du tout les bonnes informations et que j'avais suivi un tutoriel incomplet. J'ai donc suivi ce tutoriel bien mieux expliqué et tout fonctionne parfaitement maintenant.
Voici le lien du tuto : http://www.gizeek.com/2012/10/19/config ... r-et-bind/

Merci pour ta réactivité Sékiltoyai, bonne soirée à toi !