6 votes

Apache VirtualHost ne sert pas une page

J'ai un nom de domaine qui est lié à mon adresse IP à la maison. Cependant, je veux utiliser le même serveur/IP pour afficher plus d'un site web.

Mais je n'arrive pas à faire fonctionner les hôtes virtuels.

Mon conf.d/virtual.conf est :

NameVirtualHost 192.168.10.151:80

Mon sites-available/www.mydomain.com est :

Listen 80
<VirtualHost *>
        ServerAdmin     admin@mydomain.com
        ServerName      www.mydomain.com
        ServerAlias     mydomain.com

        #Indexes and Directory Root
        DirectoryIndex  index.html index.php
        DocumentRoot    /media/BigDisk/www/www.mydomain.com/

        # Log Files
        ErrorLog        /media/BigDisk/www/www.mydomain.com/logs/error.log
        CustomLog       /media/BigDisk/www/www.mydomain.com/logs/access.log combined
</VirtualHost>

Le site a été activé à l'aide d'a2ensite et apache s'est rechargé sans aucun avertissement ni erreur, mais lorsque je me rends à www.mydomain.com Je n'obtiens rien ("Opps ! Google Chrome n'a pas pu se connecter...").

Qu'est-ce que je fais de mal ?

Mise à jour : Le redémarrage d'Apache donne ce résultat :

malfist@webhost:~$ sudo /etc/init.d/apache2 restart
[sudo] password for malfist:
 * Restarting web server apache2                                                                                                                       apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

5voto

RedGrittyBrick Points 78148

Résolution du nom du chèque

Première utilisation nslookup o dig o host pour vérifier que www.mydomain.com pointe vers l'adresse IP externe statique de votre routeur.

Vérifiez la configuration du routeur

Vérifiez ensuite que votre routeur a configuré la redirection de port de sorte que les demandes arrivant sur le port 80 de l'interface externe soient redirigées vers le port 80 de l'adresse IP privée de votre serveur.

Vérifiez les restrictions du FAI

Vérifiez ensuite que les conditions générales de votre fournisseur d'accès à Internet vous autorisent à utiliser un service HTTP. Certains FAI bloquent les connexions HTTP entrantes.

LAN != Internet

Enfin, n'oubliez pas que si vous effectuez ce test à partir de votre réseau local, vous avez besoin d'une adresse IP différente pour www.mydomain.com. Vous pouvez ajouter l'adresse suivante 192.168.10.151 www.mydomain.com à votre fichier hosts (par exemple /etc/hosts o C:\WINDOWS\system32\drivers\etc\hosts ). Comme Malfist l'a souligné dans un commentaire : si le routeur prend en charge la réflexion NAT, cela n'est pas nécessaire.


Mise à jour :

Vérifier les journaux d'erreurs d'Apache (tous les journaux)

Le message "Impossible de se connecter" suggère un problème de connectivité IP de base plutôt qu'un problème de configuration de serveur virtuel Apache. Ce dernier est plus susceptible d'entraîner une réponse HTTP de 404 ou 500. Si la requête a atteint Apache, vous devriez voir une entrée dans le journal des erreurs. S'il n'y a pas d'entrée, c'est un bon indicateur qu'Apache ne reçoit aucune requête.

Suivi des avertissements et des erreurs signalés par Apache

NameVirtualHost *:80 n'a pas de VirtualHosts

Voir erreurs de configuration courantes

Plusieurs lignes NameVirtualHost donneront lieu à un avertissement "NameVirtualHost *:80 has no VirtualHosts". Apache ignorera la seconde directive et utilisera la première ligne NameVirtualHost définie, cependant. Cela semble se produire lorsque l'on utilise plusieurs fichiers de configuration d'hôtes virtuels et que l'on ne comprend pas que l'on ne doit définir qu'une seule fois une ligne NameVirtualHost particulière. Comme ci-dessus, cela peut se produire dans le fichier debian ports.conf, particulièrement après une mise à jour.

Adresse déjà utilisée : make_sock : could not bind to address 0.0.0.0:80

Un autre programme écoute déjà sur le port 80. Utilisez netstat -anp pour découvrir quoi, puis l'arrêter.

Outils de diagnostic

Renifleur d'Ethernet

J'utiliserais un renifleur de réseau (par exemple tcpdump ou wireshark) sur le serveur Apache pour voir quelles sont les requêtes HTTP entrantes - s'il n'y en a aucune, alors vous savez qu'il s'agit d'un problème de connectivité IP.


Mise à jour 2 :

Wget

Un autre bon outil de diagnostic consiste à exécuter ceci sur le serveur

 wget --header="Host: www.mydomain.com" -O - http://localhost

Voici le genre de résultats que vous devriez obtenir

\[root@mybox logs\]# wget --header="Host: foo.bar" -O - http://localhost
--2011-09-01 18:56:08--  http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 125 \[text/html\]
Saving to: \`STDOUT'

 0% \[                                       \] 0           --.-K/s              <html>
 <head>
  <title>mybox</title>
 </head>
 <body>
  <h1>mybox</h1>
  <p>Nothing to see, move along</p>
 </body>
</html>
100%\[======================================>\] 125         --.-K/s   in 0s

2011-09-01 18:56:08 (10.8 MB/s) - \`-' saved \[125/125\]

\[root@mybox logs\]# tail -n 1 access\_log
127.0.0.1 - - \[01/Sep/2011:18:56:08 +0100\] "GET / HTTP/1.0" 200 125 "-" "Wget/1.11.4 Red Hat modified"

Ajouter le -S option pour wget pour voir les en-têtes de réponse du serveur.

Si vous obtenez quelque chose comme "connexion refusée", Apache n'écoute pas sur le port 80.

Netstat

La sortie de netstat -anp devrait inclure

tcp        0      0 :::80        :::*       LISTEN      12345/httpd

1voto

Xubuntu Manics Points 1
NameVirtualHost  *:80

Ceci est en /etc/apache2/ports.conf . Si vous le supprimez ou le commentez et redémarrez Apache, l'avertissement disparaît.

1voto

Pierre Points 359

J'ai passé des heures là-dessus et tout ce que j'avais à faire était de libérer mon adresse ip ifconfig eth0 down. Elle est devenue statique, maintenant elle reconnaît mon nom d'hôte virtuel.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X