Saya punya beberapa situs yang dikonfigurasi sebagai VirtualHost menggunakan Apache yang telah berfungsi dengan baik untuk sementara waktu. Saya baru-baru ini mengubah nama host server menjadi salah satu nama domain yang sedang dilayani, dan juga menambahkannya ke / etc / hosts yang menunjuk ke alamat IP eksternal server.
Sejak saya melakukan itu, mengakses domain dari laptop saya membawa saya ke default Apache "Berhasil!" halaman. Jika saya menghapus 000-default dari / etc / apache2 / sites-enabled /, ini akan menampilkan situs yang benar. Mencoba mengakses situs dengan 'www.' awalan membawa saya ke situs yang benar apakah 000-default di situs-diaktifkan.
Berdasarkan semua itu, saya menduga konfigurasi default melayani halaman default karena cara saya mengkonfigurasi nama host atau / etc / hosts (atau keduanya), tapi saya tidak tahu cara menonaktifkannya sementara membiarkan pengaturan itu apa adanya. Ada saran!
Sunting - Konfigurasi VirtualHost saya saat ini terlihat seperti ini:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin [email protected]
DocumentRoot /srv/www/domain
ErrorLog /srv/www/domain/logs/error.log
CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>
Untuk meringkas: Saya memiliki beberapa VirtualHost diatur, dan ini adalah satu-satunya yang tidak berfungsi dengan baik. Saya dapat mengakses http://www.domain.com , tapi http://domain.com membawa saya ke default Apache "Berhasil!" halaman. Jika saya menonaktifkan konfigurasi 000-default itu menunjukkan halaman yang tepat. Ini hanya mulai terjadi setelah saya menetapkan nama host server ke domain.com dan menambahkan baris ke / etc / hosts menunjuk domain.com ke alamat IP eksternal server. Saya ingin membiarkan mereka seperti itu jika memungkinkan.
Sunting: Saya berlari apache2ctl -S
sejak /usr/sbin/apache2 -S
memberi saya "apache2: nama pengguna yang buruk $ {APACHE_RUN_USER}". Inilah hasilnya:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK
sumber
Jawaban:
Hilang pertanyaan ini tempo hari.
Ketika Anda memiliki wadah <VirtualHost> tanpa komponen ServerName, itu akan menggunakan nama host default. Karena 000-default mungkin tidak memiliki komponen ServerName, dan merupakan yang pertama menurut abjad yang akan dimasukkan, itulah sebabnya ia menjawab untuk hostname.com dan tidak mengizinkan nama host yang Anda nyatakan secara eksplisit berfungsi.
sumber
ServerName example.com
di konfigurasi default berfungsi dengan baik. Terima kasih!Apakah Anda memiliki direktif NameVirtualHost *: 80 di suatu tempat?
Mencoba:
Itu akan memberi tahu Anda bagaimana apache mem-parsing file konfigurasi. Apakah Anda memiliki konfigurasi yang memiliki IP aktual atau semuanya memiliki *? Apakah Anda kehilangan: 80? Apache tidak suka mencampurkannya.
Apakah Anda memiliki ServerName domain.com atau ServerAlias domain.com secara default?
sumber
Periksa ServerName dan ServerAlias dalam direktif VirtualHost:
Baca: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias , http://httpd.apache.org/docs/2.2/vhosts/
sumber
Ini berhasil:
ketika saya salah ketik, TIDAK berfungsi (direktif ServerName dua kali):
Ketika saya memiliki direktif ServerName dua kali, itu terus menyelesaikan ke situs pertama yang terdaftar (tidak ditampilkan di sini).
semoga ini membantu seseorang ...
sumber
Saya memiliki masalah yang sama, dan memperbaikinya dengan secara eksplisit menetapkan ServerName di file httpd.conf utama, daripada membiarkan apache secara otomatis mencari tahu itu. Saya berasumsi bahwa apache yang diputuskan sama dengan vhost saya (didefinisikan kemudian), jadi yang default "menang", mengesampingkan pengaturan vhost.
Saya hanya mengatur httpd.conf ServerName ke nama host yang dimiliki mesin, saya tidak akan pernah melayani halaman web.
sumber