Назад | Перейти на главную страницу

Как я могу решить ошибку apache2 httpd «смешивание * портов и не * портов с адресом NameVirtualHost не поддерживается»

Вот ошибка, которую я получаю при загрузке 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 для размещения нескольких сайтов:

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

Затем я нашел аналогичный вопрос на 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>