Ostrzeżenie uruchamiania Apache 2: NameVirtualHost *: 80 nie ma VirtualHosts

68

Gdy mój serwer Ubuntu Apache (Apache 2) uruchamia się, pojawia się komunikat ostrzegawczy:

[warn] NameVirtualHost *:80 has no VirtualHosts

Jednak serwer WWW działa dobrze. Co mogę pomylić w konfiguracji mojej witryny, aby wyświetlało mi to ostrzeżenie?

Plik konfiguracyjny, o którym mowa (znajduje się w /etc/apache2/sites-available), ma brzmienie:

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

Czy fakt, że używam, może <Location>być częścią problemu?

Kit Roed
źródło

Odpowiedzi:

53

Zmiana

<VirtualHost *>

czytać

<VirtualHost *:80>

Lub jego (NameVirtualHost *: 80) dodany dwukrotnie w pliku apache2 Confing. (Domyślnie jest dodany w pliku ports.conf)

To powinno usunąć błąd.

Poza tym: nie powinieneś ignorować tego błędu. Konfiguracja Apache, szczególnie gdy globbing wirtualnych hostów (np. Dołącz /etc/httpd/vhosts.d/*) nie jest stabilny. Oznacza to, że nie kontrolujesz jawnej kolejności ładowania hostów, więc domyślny vhost dla adresu IP staje się tym, który jest ładowany jako pierwszy, co może prowadzić do niezamierzonych konsekwencji.

Jednym z przykładów jest domyślny vhost dla adresu IP, który będzie również dostępny dla tego adresu IP, a nie jego nazwy . Może to spowodować wyciek informacji do Google, odnoszące się do adresu IP witryny zamiast nazwy, co może być mylące dla klientów.

Powyższy błąd NameVirtualHost może wskazywać, że apache załadował rzeczy w sposób nieoptymalny, więc nie należy go ignorować.

Dave Cheney
źródło
5
Możesz ustawić domyślny vhost w następujący sposób:<VirtualHost _default_ thehostname.com>
Amy B
51

Może to być spowodowane tym, że masz dyrektywę NameVirtualHost w więcej niż jednym miejscu.

Nie wiem o innych dystrybucjach, ale w Ubuntu / Debian konfiguracja Apache jest podzielona na kilka plików, więc musisz sprawdzić, gdzie jest duplikacja (httpd.conf, apache2.conf, ports.conf, conf.d / *).

Aha, właśnie znalazłem ten świetny zasób z dodatkowymi informacjami: Typowe błędne konfiguracje Apache .

Ivan
źródło
3
Podany link wygląda na świetny zasób do zrozumienia niuansów plików konfiguracyjnych Apache. Dzięki!
Kit Roed
4
Dzięki! To był mój problem - stworzyłem virtual.conf dla NameVirtualHost, nie wiedząc, że jest już w ports.conf
rcampbell
Dzięki - Ten sam problem tutaj w domyślnej konfiguracji serwera Ubuntu: ports.conf zawiera NameVirtualHost : 80 i nie powinien się powtarzać w plikach / config z obsługą stron !
DrSAR
1
W moim przypadku ten problem był spowodowany tym, że ubuntu miał NameVirtualHost *:80zarówno wejście, jak ports.confi wejście conf.d/virtualhosts, co wydaje się być błędem Ubuntu.
puszysty
9

W pudełku Debian / Lenny: W /etc/apache2/ports.conf znajduje się dodatkowa instrukcja NameVirtualHost - może to być przyczyną tego problemu (ta sama instrukcja znajduje się w / etc / apache2 / sites-available / default) . Skomentowałem to oświadczenie i błąd zniknął.


źródło
3

Masz NameVirtualHost bez pasującego wpisu VirtualHost.

Zazwyczaj nie jest to błąd krytyczny, tylko błąd informacyjny.

Dominic Eidson
źródło
3

Jest tak, ponieważ twoja linia NameVirtualHost ma numer portu ( :80), ale twoje sekcje VirtualHost nie.

derobert
źródło
2

Jak wspomniała Rune, w systemach Debiana NameVirtualHost pojawia się w wielu plikach - ports.conf, conf.d / virtual.conf i ewentualnie w twoich plikach conf w witrynach dostępnych

Upewnij się, że istnieje w jednym miejscu jako NameVirtualHost *: 80 (moje jest w conf.d / virtual.conf), a ostrzeżenia powinny zniknąć.

Jak wspomniano, należy również ustawić kierunek VirtualHost dla każdej dostępnej strony w tym formacie <VirtualHost *:80>

Mo01
źródło
2

Mam ten sam problem, ale w pewnym momencie wyłączam domyślną stronę Apache. Piszę coś takiego

# a2dissite default

Po próbie ponownego uruchomienia Apache 2 pojawia się następujący komunikat:

„[warn] NameVirtualHost *: 80 nie ma VirtualHosts”

Następnie ponownie włączam „domyślną” stronę Apache 2 i wszystko znowu działa, użyte polecenie to:

# a2ensite default

To wszystko ludzie!

Peter Mortensen
źródło
To była najlepsza rada.
jini
Niesamowita rada, prowadzę zpanelCP i nic nie działało, tylko to. dzięki ! :)
Eliran Efron