sviluppo-web-qa.it

Avviso di avvio di Apache 2: NameVirtualHost *: 80 non ha VirtualHosts

Quando si avvia il mio server Ubuntu Apache (Apache 2) ricevo un messaggio di avviso che dice:

[warn] NameVirtualHost *:80 has no VirtualHosts

Tuttavia, il server Web funziona correttamente. Cosa potrei avere di sbagliato nella configurazione del mio sito per farmi dare questo avviso?

Il file di configurazione in questione (situato in /etc/Apache2/sites-available) legge come (dettagli rimossi per brevità)

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

Potrebbe essere il fatto che sto usando <Location> far parte del problema?

68
Kit Roed

Modificare

<VirtualHost *>

leggere

<VirtualHost *:80>

O il suo (NameVirtualHost *: 80) aggiunto due volte nel file Confache Apache2. (Di default è aggiunto nel file ports.conf)

Questo dovrebbe cancellare l'errore.

A parte: non dovresti ignorare questo errore. La configurazione di Apache, specialmente quando si verificano globbing di host virtuali (ad esempio Includi /etc/httpd/vhosts.d/*) non è stabile. Ciò significa che non si controlla l'ordine di caricamento esplicito degli host, quindi il vhost predefinito per un IP diventa quello che viene caricato per primo, il che può portare a conseguenze indesiderate.

Un esempio di ciò è il vhost predefinito per un IP che sarà disponibile anche su quell'IP, anziché sul suo nome. Ciò può causare la perdita di informazioni su google che si riferiscono all'IP del tuo sito anziché al nome, il che può creare confusione per i clienti.

L'errore NameVirtualHost sopra può essere un suggerimento che Apache ha caricato le cose in modo non ottimale, quindi non dovresti ignorarlo.

53
Dave Cheney

Ciò potrebbe essere dovuto al fatto che hai la direttiva NameVirtualHost in più di un posto.

Non conosco altre distribuzioni, ma in Ubuntu/Debian, la configurazione di Apache è suddivisa in diversi file, quindi dovresti controllare dove si trova la duplicazione (httpd.conf, Apache2.conf, doors.conf, conf.d/*).

Oh, e ho appena trovato questa grande risorsa con ulteriori informazioni: Configurazioni comuni di Apache .

51
Ivan

Su un box Debian/Lenny: in /etc/Apache2/ports.conf c'è un'istruzione NameVirtualHost aggiuntiva - che potrebbe essere la causa di questo problema (c'è anche la stessa istruzione in/etc/Apache2/sites-available/default) . Ho commentato questa affermazione e l'errore è scomparso.

9
Rune

Hai un NameVirtualHost senza una voce VirtualHost corrispondente.

Questo non è in genere fatale, solo un errore informativo.

3
Dominic Eidson

È perché la tua linea NameVirtualHost ha un numero di porta (:80), ma le sezioni di VirtualHost no.

3
derobert

AS Rune menziona, sui sistemi Debian NameVirtualHost appare in molti file - ports.conf, conf.d/virtual.conf e possibilmente i tuoi file conf int disponibili nei siti

Assicurati che esista in un posto come NameVirtualHost *: 80 (il mio è in conf.d/virtual.conf) e che gli avvisi dovrebbero andare.

Come accennato, devi anche rendere la direzione VirtualHost per ogni sito disponibile con questo formato <VirtualHost *:80>

2
Mo01

Ho lo stesso problema, ma disabilito il sito predefinito di Apache in qualche momento. Scrivo qualcosa di simile

# a2dissite default

Dopo aver provato a riavviare Apache 2, ricevo questo messaggio:

"[warn] NameVirtualHost *: 80 non ha VirtualHosts"

Quindi abilito nuovamente il sito "predefinito" di Apache 2 e tutto funziona di nuovo, il comando utilizzato è:

# a2ensite default

È tutto gente!

2
Tiago