Peringatan startup Apache 2: NameVirtualHost *: 80 tidak memiliki VirtualHosts

68

Ketika server Ubuntu Apache saya (Apache 2) dimulai saya mendapatkan pesan peringatan yang berbunyi:

[warn] NameVirtualHost *:80 has no VirtualHosts

Namun, server web berfungsi dengan baik. Apa yang mungkin saya salah dalam konfigurasi situs saya untuk membuatnya memberi saya peringatan ini?

File konfigurasi yang dimaksud (terletak di /etc/apache2/sites-available) berbunyi seperti (perincian dihapus karena singkatnya)

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

Mungkinkah fakta yang saya gunakan <Location>menjadi bagian dari masalah?

Kit Roed
sumber

Jawaban:

53

Perubahan

<VirtualHost *>

untuk membaca

<VirtualHost *:80>

Atau (NameVirtualHost *: 80) ditambahkan dua kali dalam file confing apache2 Anda. (Secara default ditambahkan dalam file ports.conf)

Ini harus menghapus kesalahan.

Selain itu: Anda tidak boleh mengabaikan kesalahan ini. Konfigurasi Apache, terutama ketika melakukan globbing virtual host (mis. Sertakan /etc/httpd/vhosts.d/*) tidak stabil. Itu berarti Anda tidak mengontrol urutan memuat host secara eksplisit sehingga vhost default untuk IP menjadi yang memuat pertama, yang dapat menyebabkan konsekuensi yang tidak diinginkan.

Salah satu contohnya adalah vhost default untuk IP juga akan tersedia pada IP itu, bukan namanya . Ini dapat menyebabkan informasi bocor ke google yang merujuk ke IP situs Anda dan bukan nama, yang dapat membingungkan bagi pelanggan.

Kesalahan NameVirtualHost di atas bisa menjadi petunjuk bahwa apache telah memuat berbagai hal dengan cara yang tidak optimal, jadi Anda tidak boleh mengabaikannya.

Dave Cheney
sumber
5
Anda dapat mengatur vhost default seperti ini:<VirtualHost _default_ thehostname.com>
Amy B
51

Itu bisa jadi karena Anda memiliki direktif NameVirtualHost di lebih dari satu tempat.

Saya tidak tahu tentang distribusi lain, tetapi di Ubuntu / Debian, konfigurasi Apache dibagi menjadi beberapa file, jadi Anda harus memeriksa di mana duplikasinya (httpd.conf, apache2.conf, ports.conf, conf.d / *).

Oh, dan saya baru saja menemukan sumber yang hebat ini dengan informasi lebih lanjut: Konfigurasi Apache Umum .

Ivan
sumber
3
Tautan yang Anda berikan terlihat seperti sumber yang bagus untuk mencoba memahami nuansa file konfigurasi Apache. Terima kasih!
Kit Roed
4
Terima kasih! Ini adalah masalah saya - saya telah membuat virtual.conf untuk NameVirtualHost, tidak tahu itu sudah ada di ports.conf
rcampbell
Terima kasih - Masalah yang sama di sini di konfigurasi default server ubuntu: ports.conf berisi NameVirtualHost : 80 dan tidak boleh diulang dalam file situs-enabled / config!
DrSAR
1
Dalam kasus saya, masalah ini adalah karena ubuntu NameVirtualHost *:80masuk ports.confdan masuk conf.d/virtualhosts, yang tampaknya merupakan bug Ubuntu.
lembut
9

Pada kotak Debian / Lenny: Di /etc/apache2/ports.conf ada pernyataan NameVirtualHost tambahan - yang bisa menjadi penyebab masalah ini (ada juga pernyataan yang sama di / etc / apache2 / sites-available / default) . Saya mengomentari pernyataan itu dan kesalahannya hilang.


sumber
3

Anda memiliki NameVirtualHost tanpa entri VirtualHost yang cocok.

Ini biasanya tidak fatal, hanya kesalahan informatif.

Dominic Eidson
sumber
3

Itu karena baris NameVirtualHost Anda memiliki nomor port di atasnya ( :80), tetapi bagian VirtualHost Anda tidak.

derobert
sumber
2

AS Rune menyebutkan, pada sistem Debian NameVirtualHost muncul di banyak file - ports.conf, conf.d / virtual.conf dan mungkin file conf Anda sendiri di situs-tersedia

Pastikan itu ada di satu tempat sebagai NameVirtualHost *: 80 (milik saya di conf.d / virtual.conf) dan peringatan harus pergi.

Seperti yang disebutkan Anda juga perlu membuat arahan VirtualHost untuk setiap situs yang tersedia memiliki format ini <VirtualHost *:80>

Mo01
sumber
2

Saya memiliki masalah yang sama, tetapi saya menonaktifkan situs default Apache dalam beberapa saat. Saya mengetik sesuatu seperti

# a2dissite default

Setelah saya mencoba me-restart Apache 2, saya menerima pesan ini:

"[peringatkan] NameVirtualHost *: 80 tidak memiliki VirtualHosts"

Lalu saya aktifkan situs 'default' dari Apache 2 lagi dan semuanya berfungsi lagi, perintah yang digunakan adalah:

# a2ensite default

Itu semua orang!

Peter Mortensen
sumber
Ini merupakan saran terbaik.
jini
Saran yang luar biasa, saya menjalankan zpanelCP dan tidak ada yang berhasil selain ini. terima kasih! :)
Eliran Efron