Bagaimana saya bisa menyelesaikan kesalahan apache2 httpd "menggabungkan port * dan port non- * dengan alamat NameVirtualHost tidak didukung"

24

Inilah kesalahan yang saya dapatkan saat mem-boot Apache2:

 * Starting web server apache2
 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
 [Wed Oct 21 16:37:26 2009] [warn] NameVirtualHost *:80 has no VirtualHosts

Saya pertama kali mengikuti panduan ini tentang pengaturan Apache untuk meng-host beberapa situs:

http://www.debian-administration.org/articles/412

Saya kemudian menemukan pertanyaan serupa di ServerFault dan mencoba menerapkan solusi, tetapi tidak membantu.

Berikut adalah contoh konfigurasi VirtualHost terakhir saya:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName  www.xxx.com
    ServerAlias xxx.com

    # Indexes + Directory Root.
    DirectoryIndex index.html
    DocumentRoot /var/www/www.xxx.com

    # Logfiles
    ErrorLog  /var/www/www.xxx.com/logs/error.log
    CustomLog /var/www/www.xxx.com/logs/access.log combined
</VirtualHost>

dengan domain X'd untuk melindungi yang tidak bersalah :-)

Juga, saya memiliki file conf.d / virtual.conf yang disebutkan dalam panduan terlihat seperti ini:

NameVirtualHost *

Yang aneh adalah semuanya tampak berfungsi dengan baik untuk dua dari tiga situs.

rcampbell
sumber
Posting konfigurasi Apache httpd (!) Anda yang lengkap atau setidaknya setiap baris NameVirtualHost dan <VirtualHost ...>.
joschi
Anda tidak dapat mencampur dua jenis pada ip: port yang sama. Saya telah memiliki pengaturan di mana saya memiliki dua ip, satu memiliki massvhost menggantungnya, yang lain memiliki semua host yang dinamai biasa. Lebih penting lagi, apa tujuannya? Apa yang ingin Anda capai? Apa kendala Anda?
Marcin

Jawaban:

29

Alamat IP yang diberi nama NameVirtualHostharus cocok dengan alamat IP di setiap VirtualHostelemen.

Contoh:

NameVirtualHost *:80
NameVirtualHost *:81

<VirtualHost *:80>
# ...
</VirtualHost>

<VirtualHost *:81>
# ...
</VirtualHost>

# This will not work!
<VirtualHost *>
# ...
</VirtualHost>

Baca dokumentasi Apache Virtual Host untuk detailnya.

Joseph
sumber
Seandainya aku bisa memilih lebih dari satu kali. Mereka benar-benar harus menyebutkan ini lebih jelas dalam dokumentasi.
Alex W
13

Ganti ini:

NameVirtualHost *

Dengan ini:

NameVirtualHost *:80
Eric Dennis
sumber
2
Saya menghargai jawaban sederhana dan berharap aku bisa menerima baik
rcampbell
5

Menambah respons, satu hal yang saya perhatikan adalah Anda tidak dapat menjalankan SSL tanpa secara eksplisit mendeklarasikan: 80 pada setiap arahan NameVirtualHost dan VirtualHost, apache tidak akan mendukung memiliki:

NameVirtualHost *

dan

NameVirtualHost *: 443

Dicampur dalam konfigurasi yang sama, Anda akan mendapatkan kesalahan pada apache mendengarkan pada port nol jika Anda melakukannya.

Bagi saya, saya baru saja menambahkan: 80 ke setiap host sehingga SSL dapat bekerja dengan baik.

Rodrigo
sumber
0

Ex:

<VirtualHost 85.25.97.252:80>
ServerName domain.com
ServerAlias ​​* .domain.com
ServerAdmin [email protected]
DocumentRoot "/var/www/domain.com/httpdocs/"
<Directory "/var/www/domain.com/ httpdocs / ">
Indeks Pilihan FollowSymLinks
AllowOverride All
Order allow, tolak
Allow dari semua
</Directory>
</VirtualHost>

friv
sumber