Avertissement de démarrage d'Apache 2: NameVirtualHost *: 80 n'a aucun hôte virtuel

68

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 bien. Qu'est-ce qui pourrait me tromper 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 suit (détails supprimés pour des raisons de brièveté)

<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 je consomme <Location>pourrait-il faire partie du problème?

Kit Roed
la source

Réponses:

53

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 devriez pas ignorer cette erreur. La configuration d'Apache, en particulier lors de la globalisation d'hôtes virtuels (par exemple, Include /etc/httpd/vhosts.d/*) n'est pas stable. Cela signifie que vous ne contrôlez pas explicitement l'ordre de chargement des hôtes. Par conséquent, vhost par défaut pour une adresse IP devient celui chargé en premier, ce qui peut avoir des conséquences inattendues.

Un exemple de cela est vhost par défaut pour une adresse IP sera également disponible sur cette adresse IP, plutôt que son nom . Cela peut entraîner une fuite d'informations sur Google faisant référence à l'adresse IP de vos sites plutôt qu'à leur nom, ce qui peut prêter à confusion pour les clients.

L'erreur NameVirtualHost ci-dessus peut indiquer que Apache a chargé des choses de manière non optimale. Vous ne devez donc pas l'ignorer.

Dave Cheney
la source
5
Vous pouvez définir le vhost par défaut comme ceci:<VirtualHost _default_ thehostname.com>
Amy B
51

Cela peut être dû au fait que la directive NameVirtualHost se trouve à plusieurs endroits.

Je ne connais pas d'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: Mauvaises configurations d’Apache courantes .

Ivan
la source
3
Le lien que vous avez donné semble être une excellente ressource pour tenter de comprendre les nuances des fichiers de configuration Apache. Merci!
Kit Roed
4
Merci! C'était mon problème - j'avais créé un virtual.conf pour NameVirtualHost, ne sachant pas qu'il était déjà dans ports.conf
rcampbell
Merci - Même problème ici dans la configuration par défaut d'un serveur Ubuntu: ports.conf contient NameVirtualHost : 80 et ne doit pas être répété dans les fichiers / config avec l' activation de sites !
DrSAR
1
Dans mon cas, cette question était parce que ubuntu avait à la NameVirtualHost *:80fois dans ports.confet conf.d/virtualhosts, ce qui semble être un bug Ubuntu.
moelleux
9

Sur une boîte Debian / Lenny: Dans /etc/apache2/ports.conf, il existe une instruction NameVirtualHost supplémentaire - qui pourrait en être la cause (il existe également la même instruction dans / etc / apache2 / sites-available / default) . J'ai commenté cette déclaration et l'erreur a disparu.


la source
3

Vous avez un NameVirtualHost sans une entrée VirtualHost correspondante.

Ce n'est généralement pas fatal, c'est juste une erreur d'information.

Dominic Eidson
la source
3

C'est parce que votre ligne NameVirtualHost a un numéro de port ( :80), mais pas vos sections VirtualHost.

derobert
la source
2

AS Rune mentionne que sur les systèmes Debian, NameVirtualHost apparaît dans de nombreux fichiers - ports.conf, conf.d / virtual.conf et éventuellement vos propres fichiers de configuration int sites-available.

Assurez-vous qu’il existe au même endroit que NameVirtualHost *: 80 (le mien se trouve dans conf.d / virtual.conf) et les avertissements devraient disparaître.

Comme mentionné précédemment, vous devez également définir la direction de VirtualHost pour chaque site disponible. <VirtualHost *:80>

Mo01
la source
2

J'ai le même problème, mais je désactive le site par défaut d'Apache dans un moment. Je tape quelque chose comme

# a2dissite default

Après avoir essayé de redémarrer Apache 2, je reçois le message suivant:

"[avertir] NameVirtualHost *: 80 n'a pas d'hôte virtuel"

Ensuite, j'active à nouveau le site 'par défaut' d'Apache 2 et tout fonctionne à nouveau, la commande utilisée est la suivante:

# a2ensite default

C'est tout les gens!

Peter Mortensen
la source
Cela a été le meilleur conseil.
Jini
Super conseil, je suis sous zpanelCP et rien n’a fonctionné à part ça. Merci ! :)
Eliran Efron