Apache 2-Startwarnung: NameVirtualHost *: 80 enthält keine VirtualHosts

68

Beim Start meines Ubuntu Apache-Servers (Apache 2) erhalte ich eine Warnmeldung mit folgendem Inhalt:

[warn] NameVirtualHost *:80 has no VirtualHosts

Der Webserver funktioniert jedoch einwandfrei. Was kann ich an der Konfiguration meiner Site falsch machen, damit ich diese Warnung erhalte?

Die betreffende Konfigurationsdatei (befindet sich in /etc/apache2/sites-available) lautet wie folgt (Details wurden der Kürze halber entfernt)

<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>

Könnte die Tatsache, dass ich verwende <Location>, ein Teil des Problems sein?

Kit Roed
quelle

Antworten:

53

Veränderung

<VirtualHost *>

lesen

<VirtualHost *:80>

Oder seine (NameVirtualHost *: 80) zweimal in Ihre Apache2 Confing-Datei hinzugefügt. (Standardmäßig in der Datei ports.conf hinzugefügt)

Dies sollte den Fehler beheben.

Nebenbei: Diesen Fehler sollten Sie nicht ignorieren. Die Konfiguration von Apache, insbesondere beim Globbing von virtuellen Hosts (z. B. Include /etc/httpd/vhosts.d/*), ist nicht stabil. Das bedeutet, dass Sie die Reihenfolge des Ladens der Hosts nicht explizit steuern, sodass der Standard-vhost für eine IP-Adresse derjenige wird, der zuerst geladen wird, was zu unbeabsichtigten Konsequenzen führen kann.

Ein Beispiel hierfür ist, dass der Standard-vhost für eine IP auch für diese IP verfügbar ist und nicht für ihren Namen . Dies kann dazu führen, dass Informationen auf Google durch Verweis auf die IP-Adresse Ihrer Website und nicht auf den Namen gelangen, was für Kunden verwirrend sein kann.

Der NameVirtualHost-Fehler oben kann ein Hinweis darauf sein, dass der Apache die Dinge nicht optimal geladen hat. Sie sollten ihn also nicht ignorieren.

Dave Cheney
quelle
5
Sie können den voreingestellten vhost wie folgt einstellen:<VirtualHost _default_ thehostname.com>
Amy B
51

Dies kann daran liegen, dass Sie die NameVirtualHost-Direktive an mehreren Stellen haben.

Ich kenne keine anderen Distributionen, aber in Ubuntu / Debian ist die Konfiguration von Apache in mehrere Dateien aufgeteilt, sodass Sie überprüfen müssen, wo sich die Duplikation befindet (httpd.conf, apache2.conf, ports.conf, conf.d / *).

Oh, und ich habe gerade diese großartige Ressource mit weiteren Informationen gefunden: Häufige Apache-Fehlkonfigurationen .

Ivan
quelle
3
Der Link, den Sie angegeben haben, scheint eine großartige Ressource zu sein, um die Nuancen von Apache-Konfigurationsdateien zu verstehen. Vielen Dank!
Kit Roed
4
Vielen Dank! Das war mein Problem - ich virtual.conf für Namevirtualhost geschaffen hatte, nicht zu wissen , es bereits in ports.conf war
rcampbell
Danke - Gleiches Problem hier in einer Ubuntu-Server-Standardkonfiguration: ports.conf enthält NameVirtualHost : 80 und sollte in den sites-enabled / config-Dateien nicht wiederholt werden!
DrSAR
1
In meinem Fall lag dieses Problem daran, dass Ubuntu NameVirtualHost *:80sowohl in ports.confals auch in hatte conf.d/virtualhosts, was anscheinend ein Ubuntu-Fehler ist.
flauschige
9

Auf einer Debian / Lenny-Box: In /etc/apache2/ports.conf gibt es eine zusätzliche NameVirtualHost-Anweisung - dies könnte die Ursache für dieses Problem sein (es gibt auch die gleiche Anweisung in / etc / apache2 / sites-available / default) . Ich habe diese Aussage kommentiert und der Fehler ist verschwunden.


quelle
3

Sie haben einen NameVirtualHost ohne passenden VirtualHost-Eintrag.

Dies ist in der Regel nicht schwerwiegend, sondern nur ein informativer Fehler.

Dominic Eidson
quelle
3

Dies liegt daran, dass in Ihrer NameVirtualHost-Zeile eine Portnummer angegeben ist ( :80), in Ihren VirtualHost-Abschnitten jedoch nicht.

derobert
quelle
2

AS Rune erwähnt, dass auf Debian-Systemen NameVirtualHost in vielen Dateien vorkommt - ports.conf, conf.d / virtual.conf und möglicherweise Ihre eigenen conf-Dateien auf Websites, die verfügbar sind

Stellen Sie sicher, dass es an einer Stelle als NameVirtualHost *: 80 existiert (meine befindet sich in conf.d / virtual.conf) und die Warnungen sollten verschwinden.

Wie bereits erwähnt, müssen Sie auch die VirtualHost-Richtung für jeden Standort verfügbar machen, um dieses Format zu haben <VirtualHost *:80>

Mo01
quelle
2

Ich habe das gleiche Problem, aber ich deaktiviere die Standard-Site von Apache in einem Moment. Ich tippe so etwas wie

# a2dissite default

Nach dem Versuch, Apache 2 neu zu starten, wird folgende Meldung angezeigt:

"[warn] NameVirtualHost *: 80 hat keine VirtualHosts"

Dann aktiviere ich die 'Standard'-Site von Apache 2 wieder und alles funktioniert wieder. Der verwendete Befehl lautet:

# a2ensite default

Das war's Leute!

Peter Mortensen
quelle
Dies war der beste Rat.
jini
Toller Rat, ich leite zpanelCP und nichts hat funktioniert, aber das hier. Vielen Dank ! :)
Eliran Efron