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

Файл Apache httpd-vhosts.conf, отправляющий все запросы на vhost по умолчанию

Что здесь не так?

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName domain1.com
    ServerAdmin membersupport@domain1.com
    DocumentRoot /var/www/html/domain1-com
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    ServerAdmin hello@domain2.com
    DocumentRoot /var/www/html/domain2-com
</VirtualHost>

Проблема:

domain1.com правильно обслуживает контент на /var/www/html/domain1-com, но domain2.com также обслуживает контент на /var/www/html/domain1-com.

Вот результат httpd -S

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server domain1.com (/etc/httpd/conf/extra/httpd-vhosts.conf:21)
         port 80 namevhost domain1.com (/etc/httpd/conf/extra/httpd-vhosts.conf:21)
         port 80 namevhost domain2.com (/etc/httpd/conf/extra/httpd-vhosts.conf:27)
Syntax OK

Это apache версии 2.2.22.

Заранее спасибо.

ОБНОВЛЕНО - Основываясь на ответах ниже, я обновил свой файл conf и вопрос. К сожалению, проблема все еще существует. (Я только добавил _default_ как часть моей попытки решить проблему самостоятельно, прежде чем задавать вопрос.)

При настройке виртуальных хостов на основе имен шаблон IP: PORT, который вы даете директиве NameVirtualHost, должен быть точно таким же, как тот, который вы даете каждому из ваших виртуальных хостов.

Итак, ваша конфигурация должна быть:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName domain1.com
    DocumentRoot /var/www/html/domain1-com
</VirtualHost>

<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/html/domain2-com
</VirtualHost>

Вы не используете и не должны использовать _default_. В дефолт Шаблон IP используется в конфигурациях виртуального хоста на основе IP, чтобы указать, какой хост используется, когда запрос поступает на IP, на котором не настроен виртуальный хост. Здесь это не то, что вам нужно. Смешивание виртуальных хостов на основе IP и имен является сложным и может привести к неожиданным результатам ...

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

+ Изменить NameVirtualHost *:80 к NameVirtualHost *

Дело в том, что с подстановочным знаком и портом apache будет точно соответствовать списку виртуальных хостов.