Вот ошибка, которую я получаю при загрузке 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
Сначала я выполнил это руководство по настройке Apache для размещения нескольких сайтов:
Затем я нашел аналогичный вопрос на ServerFault и попытался применить решение, но это не помогло.
Вот пример моей последней конфигурации VirtualHost:
<VirtualHost *:80>
ServerAdmin admin@xxx.com
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>
с доменом X'd, чтобы защитить невиновных :-)
Кроме того, у меня есть conf.d / virtual.conf файл, упомянутый в руководстве, выглядит следующим образом:
NameVirtualHost *
Странно то, что на двух из трех сайтов все работает нормально.
IP-адреса, названные NameVirtualHost
должны соответствовать IP-адресу в каждом VirtualHost
элемент.
Пример:
NameVirtualHost *:80
NameVirtualHost *:81
<VirtualHost *:80>
# ...
</VirtualHost>
<VirtualHost *:81>
# ...
</VirtualHost>
# This will not work!
<VirtualHost *>
# ...
</VirtualHost>
Прочтите Документация по виртуальному хосту Apache для подробностей.
Замените это:
NameVirtualHost *
С этим:
NameVirtualHost *:80
Добавляя к ответам, я заметил одну вещь: вы не можете запускать SSL без явного объявления: 80 во всех директивах NameVirtualHost и VirtualHost, apache не будет поддерживать наличие:
ИмяVirtualHost *
и
ИмяVirtualHost *: 443
Если вы запутались в той же конфигурации, вы получите ошибки при прослушивании apache на нулевом порту, если вы это сделаете.
Для себя я только что добавил: 80 на каждый хост, чтобы SSL мог работать правильно.
Пример:
<VirtualHost 85.25.97.252:80>
ServerName domain.com
ServerAlias * .domain.com
ServerAdmin webmaster@domain.com
DocumentRoot "/var/www/domain.com/httpdocs/"
<Каталог "/var/www/domain.com/httpdocs /">
Индексы опций FollowSymLinks
AllowOverride All
Заказать разрешить, запретить
Разрешить от всех
</Directory>
</VirtualHost>