Lorsque mon serveur Ubuntu Apache (Apache 2) démarre, je reçois un message d'avertissement qui se lit comme suit:
[warn] NameVirtualHost *:80 has no VirtualHosts
Cependant, le serveur Web fonctionne correctement. Que puis-je avoir de mal dans la configuration de mon site pour qu'il me donne cet avertissement?
Le fichier de configuration en question (situé dans /etc/Apache2/sites-available
) se lit comme (détails supprimés par souci de concision)
<VirtualHost *>
<Location /mysite>
# Configuration details here...
</Location>
# Use the following for authorization.
<LocationMatch "/mysite/login">
AuthType Basic
AuthName "My Site"
AuthUserFile /etc/sitepasswords/passwd
Require valid-user
</LocationMatch>
</VirtualHost>
Le fait que j'utilise <Location>
faire partie du problème?
Changement
<VirtualHost *>
lire
<VirtualHost *:80>
Ou son (NameVirtualHost *: 80) ajouté deux fois dans votre fichier Apache2 Confing. (Par défaut, il est ajouté dans le fichier ports.conf)
Cela devrait effacer l'erreur.
À part: vous ne devez pas ignorer cette erreur. La configuration d'Apache, en particulier lors de la globalisation des hôtes virtuels (par exemple, inclure /etc/httpd/vhosts.d/*) n'est pas stable. Cela signifie que vous ne contrôlez pas l'ordre de chargement des hôtes explicitement, de sorte que le vhost par défaut pour une IP devient celui qui est chargé en premier, ce qui peut entraîner des conséquences inattendues.
Un exemple de ceci est le vhost par défaut pour une IP sera également disponible sur cette IP, plutôt que son nom. Cela peut entraîner une fuite d'informations sur Google faisant référence à l'IP de votre site plutôt qu'au nom, ce qui peut être source de confusion pour les clients.
L'erreur NameVirtualHost ci-dessus peut être un indice qu'Apache a chargé les choses de manière non optimale, vous ne devez donc pas l'ignorer.
Cela peut être dû au fait que vous avez la directive NameVirtualHost à plusieurs endroits.
Je ne connais pas les autres distributions, mais dans Ubuntu/Debian, la configuration d'Apache est divisée en plusieurs fichiers, vous devez donc vérifier où se trouve la duplication (httpd.conf, Apache2.conf, ports.conf, conf.d/*).
Oh, et je viens de trouver cette excellente ressource avec plus d'informations: Common Apache Misconfigurations .
Sur une boîte Debian/Lenny: Dans /etc/Apache2/ports.conf il y a une instruction NameVirtualHost supplémentaire - qui pourrait être la cause de ce problème (il y a aussi la même instruction dans/etc/Apache2/sites-available/default) . J'ai commenté cette déclaration et l'erreur a disparu.
Vous avez un NameVirtualHost sans entrée VirtualHost correspondante.
Ce n'est généralement pas fatal, juste une erreur informative.
C'est parce que votre ligne NameVirtualHost a un numéro de port (:80
), mais pas vos sections VirtualHost.
Comme le mentionne Rune, sur les systèmes Debian, NameVirtualHost apparaît dans de nombreux fichiers - ports.conf, conf.d/virtual.conf et éventuellement vos propres fichiers de conf dans les sites disponibles
Assurez-vous qu'il existe au même endroit que NameVirtualHost *: 80 (le mien est dans conf.d/virtual.conf) et les avertissements devraient disparaître.
Comme mentionné, vous devez également faire en sorte que la direction VirtualHost pour chaque site disponible ait ce format <VirtualHost *:80>
J'ai le même problème, mais je désactive le site par défaut d'Apache à un moment donné. Je tape quelque chose comme
# a2dissite default
Après avoir essayé de redémarrer Apache 2, je reçois ce message:
"[avertir] NameVirtualHost *: 80 n'a pas de VirtualHosts"
Ensuite, j'active à nouveau le site 'par défaut' d'Apache 2 et tout fonctionne à nouveau, la commande utilisée est:
# a2ensite default
C'est tout le monde!