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

24

Вот ошибка, которую я получаю при загрузке 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>

с доменом Икс, чтобы защитить невинных :-)

Кроме того, у меня есть файл conf.d / virtual.conf, упомянутый в руководстве, который выглядит следующим образом:

NameVirtualHost *

Странно то, что на двух из трех сайтов все работает нормально.

rcampbell
источник
Опубликуйте свою полную (!) Конфигурацию Apache httpd или хотя бы каждую строку NameVirtualHost и <VirtualHost ...>.
Йоси
Вы не можете смешивать два типа на одном и том же ip: порту. У меня была установка, в которой у меня было два ip, у одного из них висел massvhost, у другого были все обычные хосты на основе имен. Что еще более важно, какова цель? Чего ты пытаешься достичь? Каковы ваши ограничения?
Марчин

Ответы:

29

IP-адреса с именами NameVirtualHostдолжны соответствовать IP-адресу в каждом VirtualHostэлементе.

Пример:

NameVirtualHost *:80
NameVirtualHost *:81

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

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

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

Прочитайте документацию Apache Virtual Host для подробностей.

Joschi
источник
Жаль, что я не мог проголосовать больше, чем один раз. Они действительно должны более четко это указать в документации.
Алекс W
13

Заменить это:

NameVirtualHost *

С этим:

NameVirtualHost *:80
Эрик Деннис
источник
2
Я ценю простой ответ и желаю, чтобы я мог принять оба
rcampbell
5

Добавляя к ответам, я заметил одну вещь: вы не можете запустить SSL без явного объявления: 80 в каждой директиве NameVirtualHost и VirtualHost, apache не будет поддерживать наличие:

NameVirtualHost *

а также

NameVirtualHost *: 443

Смешанный в той же конфигурации, вы получите ошибки при прослушивании Apache на нулевом порту, если вы это сделаете.

Для меня я просто добавил: 80 для каждого хоста, чтобы SSL мог работать по собственному усмотрению.

Родриго
источник
0

Пример:

<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
Order разрешить, запретить
Allow from all
</ Directory>
</ VirtualHost>

Отдохните
источник