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

Все запросы направлены на один виртуальный хост

Я только что установил Apache 2.2 и пытаюсь разместить два домена на одной конфигурации сервера. Сначала я создал виртуальный хост (a.com), и отладил мою конфигурацию, чтобы она работала. Когда я пытался добавить виртуальный хост b.com, и попытался получить к нему доступ, все, что я получил, - это правильная страница для a.com. Оба виртуальных хоста указывают на один и тот же статический IP-адрес. Сервер работает под управлением CentOS на VPS.

/usr/local/apache2/conf/httpd.conf имеет базовую конфигурацию и частично приведена ниже, но у меня httpd.conf Include второй файл, clients.conf это в свою очередь Includes конфигурация для каждого сайта, которая находится в домашних каталогах различных веб-сайтов. (Каждый сайт имеет свою учетную запись с каталогами web, scripts, data, и config.)

httpd.conf:

Listen 80

NameVirtualHost [ip]
# [...]
Include /usr/local/apache2/conf/clients.conf

client.conf:

Include /home/[a]/conf/apache/vhost.conf
Include /home/[b]/conf/apache/vhost.conf

/home/[a]/conf/apache/vhost.conf

<VirtualHost [ip]>
    ServerName www.[a].com
    ServerAlias [a].com
    ServerAdmin [me]@[a].com
    DocumentRoot /home/[a]/web/home
    ErrorDocument 404 "http://www.[a].com/error/?404"

    <Directory /home/[a]/web/home>
        Options -Indexes FollowSymLinks
        # Don't allow any .htaccess files
        AllowOverride None
        # Allow everyone to access
        Order allow,deny
    </Directory>
</VirtualHost>

/home/[b]/config/apache/vhost.conf

<VirtualHost [ip]>
ServerName www.[b].com
ServerAlias [b].com
ServerAdmin admin@[b].com
DocumentRoot /home/[b]/web/home
ErrorDocument 404 "http://www.[b].com/error/?/404/"

<Directory /home/[b]/web/home>
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>
<VirtualHost [ip]>
ServerName beta.[b].com
DocumentRoot /home/[b]/web/home

<Directory /home/[b]/web/home>
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

(Извините за весь код, но я не знал, сколько нужно.)

Может ли кто-нибудь увидеть проблему в моем коде? Я думаю, что он выглядит почти идентично Пример VirtualHost (первый), за исключением того, что я расширил «Другие директивы здесь» и использовал полные IP-адреса, а не * подстановочный знак, который описан в «Примечание:» под примером.

редактировать:

Как подсказал комментарий, я попробовал apachectl -S, что дало следующий результат:

# /usr/local/apache2/bin/apachectl -S
VirtualHost configuration:
[ip]      is a NameVirtualHost
         default server www.[a].com (/home/[a]/conf/apache/vhost.conf:5)
         port 80 namevhost www.[a].com (/home/[a]/conf/apache/vhost.conf:5)
Syntax OK

Не должен [b].com быть здесь?

Я выяснил решение моей проблемы, пытаясь предложить предложение BMDan. Я открыл clients.conf, который должен был быть (и был сохранен как) включая файлы из клиентского a и b. Вместо этого все, что у него было, это включение для a. Я понятия не имею, почему он не содержал нужных данных, но моя установка Apache теперь работает правильно.

Я благодарю всех, кто помог мне с этой проблемой, и прошу прощения, если проблема была вызвана ошибкой, которую я сделал.

Который [b].com не появляется - это признак того, что [b] либо не загружается, либо не распознается (и обычно последнее). Наиболее частой причиной этого является несоответствие IP-адреса, указанного как часть вашего NameVirtualHost, и IP-адреса, указанного в <VirtualHost>; это одна из причин, почему использование *:80 вообще желательно.

В любом случае, есть простой тест, чтобы увидеть, загружается ли файл: просто включите недопустимую команду конфигурации в [b].comконфигурационного файла и посмотрите, httpd -t (или service httpd configtest, поскольку вы используете CentOS) сообщает об ошибке.