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


68

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 (che si trova in /etc/apache2/sites-available) recita 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>

Il fatto che sto usando <Location>potrebbe essere una parte del problema?

Risposte:


53

Modificare

<VirtualHost *>

leggere

<VirtualHost *:80>

O il suo (NameVirtualHost *: 80) aggiunto due volte nel tuo file Confing 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 travagliano 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, piuttosto che il 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.


5
È possibile impostare il vhost predefinito in questo modo:<VirtualHost _default_ thehostname.com>
Amy B

51

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: Errori di configurazione comuni di Apache .


3
Il link che hai dato sembra un'ottima risorsa per cercare di capire le sfumature dei file di configurazione di Apache. Grazie!
Kit Roed

4
Grazie! Questo era il mio problema - avevo creato un virtual.conf per NameVirtualHost, non sapendo che fosse già in ports.conf
rcampbell,

Grazie - Stesso problema qui in una configurazione predefinita del server Ubuntu: doors.conf contiene NameVirtualHost : 80 e non deve essere ripetuto nei file abilitati per i siti / config!
DrSAR,

1
Nel mio caso, questo problema era dovuto al fatto che Ubuntu aveva NameVirtualHost *:80sia dentro ports.confche dentro conf.d/virtualhosts, che sembra essere un bug di Ubuntu.
soffice

9

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.


3

Hai un NameVirtualHost senza una voce VirtualHost corrispondente.

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


3

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


2

AS Rune menziona, sui sistemi Debian NameVirtualHost appare in molti file: doors.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

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!


Questo è stato il miglior consiglio.
jini,

Consiglio fantastico, sto eseguendo zpanelCP e niente ha funzionato tranne questo. Grazie ! :)
Eliran Efron,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.