Saya mencoba menambahkan host virtual kedua ke konfigurasi apache saya, tetapi sepertinya tidak bisa mendapatkan host virtual baru untuk digunakan.
Saya httpd.conf
hanya berisi baris berikut:
ServerName radiofreebrighton.org.uk
Saya juga punya ports.conf
file, yang berisi yang berikut ini:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Saya memiliki dua file sites-available
yang disinkronkan sites-enabled
oleh a2ensite
:
- radiofreebrighton.org.uk
- trafalgararches.co.uk
Isi yang pertama adalah:
<VirtualHost _default_:80>
DocumentRoot /home/tom/www
ServerAdmin [email protected]
ServerName radiofreebrighton.org.uk
ServerAlias www.radiofreebrighton.org.uk
<Directory /home/tom/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel error
CustomLog /var/log/apache2/access.log combined
Alias /wiki /home/tom/www/mediawiki/index.php
</VirtualHost>
Isi yang terakhir adalah:
<VirtualHost *:80>
DocumentRoot /home/tom/tata-www
ServerAdmin [email protected]
ServerName trafalgararches.co.uk
ServerAlias www.trafalgararches.co.uk
<Directory /home/tom/tata-www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
logLevel error
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Tetapi setiap kali saya meminta halaman dari trafalgararches.co.uk, saya diberi halaman dari radiofreebrighton.org.uk. Mengapa ini bisa terjadi? Bagaimana saya bisa memperbaikinya?
Edit:
Konfigurasi host virtual sebagaimana dipahami oleh apache:
tom@rfb:/usr/local$ apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost trafalgararches.co.uk (/etc/apache2/sites-enabled/trafalgararches.co.uk:1)
Syntax OK
(Diperoleh melalui apache2ctl -S
alias httpd -S
.)
apache-2.2
virtualhost
Tom Wright
sumber
sumber
ServerName
dan AndaServerAlias
. Juga, pastikan Anda telah memulai kembali apache.NameVirtualHost *:80
tempat dalam konfigurasi Anda?Jawaban:
Nah, pertanyaan ini sudah berusia lebih dari satu tahun, tetapi saya telah menemukan "masalah" serupa. Ini mungkin jelas, tetapi jangan lupa untuk me-restart layanan apache setelah mengaktifkan virtual host tambahan. Lihat, setelah mengeksekusi
a2ensite
untuk virtual host kedua, output dariapache2ctl -S
akan menunjukkan bahwa kedua situs tersedia (dan salah satunya adalah default), bahkan jika Anda tidak memuat ulang apache.Katakanlah Anda memiliki dua host virtual - site1 dan site2. Anda menjalankan
a2ensite site1
dan kemudian memuat kembali layanan apache. Sekarang Anda dapat mengakseshttp://site1
dan itu adalah default. Sekarang Anda jalankana2ensite site2
, tetapi lupa untuk me-restart apache. Output dariapache2ctl -S
akan:Tetapi ketika Anda mencoba memuat
http://site2
, itu sebenarnya akan memuat situs default (site1), karena konfigurasi tidak dimuat.sumber
Saya memiliki masalah serupa di mana vhosts tambahan saya pada port 443 (SSL / HTTPS) semuanya diarahkan ke direktori vhost pertama yang terdaftar. Apache pada dasarnya mengabaikan properti servername dan hanya cocok di ip: port.
Ternyata saya kehilangan perintah 'NameVirtualHost *: 443' untuk mengaktifkan hosting virtual Bernama untuk port 443.
'NameVirtualHost *: 443' hanya perlu dipanggil sekali, dan harus didefinisikan di atas vhosts Anda untuk port 443. Saya meletakkan definisi saya di file ports.config sehingga terlihat seperti:
Jangan lupa untuk me-restart apache setelah perubahan.
sumber
NameVirtualHost
menghasilkan pesan ini pada saat startup:AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf
2 sen saya: karena saya harus tetap menggunakan IP (saya tidak ingin situs dilayani pada semua jaringan yang diinstal), kebetulan setelah IP pribadi lokal dari server berubah, saya lupa mengubahnya di sini:
NameVirtualHost 192.168.100.20:80 <VirtualHost 192.168.100.20:80>
Tentu saja ini bukan masalah Apache untuk memberi tahu Anda bahwa IP tidak ada secara lokal.
sumber
Tom, silakan lihat di sini http://httpd.apache.org/docs/2.0/id/mod/core.html#namevirtualhost
Jadi seharusnya tidak apa-apa jika Anda mengubah default ke ip-address server Anda.
sumber
Saya menemukan jawaban dari sini: http://alexking.org/blog/2007/11/01/apache-2-only-serves-first-virtual-host
Masukkan 2 servername dalam tag VirtualHost 1 yang sama seperti di bawah ini:
Saya akhirnya mengalami masalah dengan situs kedua karena saya memiliki dua blok tag VirtualHost.
sumber
Saya mengalami masalah ini saat memigrasi situs ke server Ubuntu 16 yang baru. Setelah sedikit menggaruk-garuk kepala, saya menyadari Modul SSL tidak diaktifkan secara default, jadi apa pun di dalam
<IfModule mod_ssl.c>
blok tentu saja diabaikan dengan diam-diam.Bertahun-tahun yang lalu saya membungkus semua vhost SSL saya dalam kondisi ini, dan kali ini saya baru saja menyalin file konfigurasi ke server baru.
Saya memperbaikinya dengan mengaktifkan modul:
sumber
Saya menemukan sumber masalah ini adalah entri / etc / hosts di server saya dengan URL di dalamnya menunjuk ke IP eksternal server.
Pada satu titik, saya harus menyiapkannya sebelum DNS siap, jadi saya memasukkan entri / etc / hosts di server saya yang menunjuk ke IP eksternal sendiri:
Lalu saya mengatur ServerAlias ke situs yang ada untuk "vhost.example.com"
Tapi tidak ada yang bisa saya lakukan untuk menghentikan Apache yang melayani situs default-ssl.conf untuk permintaan SSL ke vhost.example.com. HTTP Port 80 bekerja dengan baik, tetapi SSL selalu menampilkan situs default sebagai gantinya. Pada akhirnya utas ini mengarahkan saya untuk mencoba "apachectl -S" yang menunjukkan situs dan akhirnya saya bisa mengetahuinya.
Jadi jika Anda mendapatkan situs SSL default alih-alih situs yang Anda harapkan, pastikan Anda tidak menambahkan alamat IP eksternal server Anda di entri / etc / hosts! Suatu hal yang cukup aneh untuk dilakukan di belakang, tetapi mudah-mudahan ini membantu orang lain!
sumber