Я не могу заставить мои виртуальные хосты нормально работать в Apache

Хотя я знаю, что эта тема уже обсуждалась в некоторых других темах, где объясняется, как настроить Virtualhosts в Apache. Дело в том, что после поиска возможных ответов на мою проблему здесь, исследования в Google и чтения официальной документации Apache, я не могу решить свою проблему.

Во-первых, у меня была запущена одна установка WordPress на Apache 2.4, установленная в CentOS 7, и я настроил следующий Virtualhost:

<VirtualHost *:80>

ServerName subdomain1.domain.com
ServerAlias www.subdomain1.domain.com
DocumentRoot /some/path/to/wordpress

<Directory "/some/path/to/wordpress">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/subdomain1-error.log"
CustomLog "logs/subdomain1-access.log" combined      
LogLevel warn

</VirtualHost>

Это работало нормально, но затем я решил добавить установку Moodle (потому что на сервере не слишком много трафика), а затем, если я просматриваю Chrome subdomain1.domain.com или subdomain2.domain.com, это не имеет значения, Chrome всегда переходит на subdomain2.domain.com (веб-сайт Moodle).

Я пробовал в Chrome и Firefox с одинаковыми результатами. Виртуальный хостинг Moodle - это:

<VirtualHost *:80>

ServerName subdomain2.domain.com
ServerAlias www.subdomain2.domain.com
DocumentRoot /some/path/to/moodle

<Directory "/some/path/to/moodle">
    DirectoryIndex index.php
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

<Files ".ht*">
   Require all denied
</Files>

ErrorLog "logs/subdomain2-error.log"
CustomLog "logs/subdomain2-access.log" combined
LogLevel warn

</VirtualHost>

Кроме того, файл конфигурации Apache httpd.conf включает эти VirtualHosts с помощью директивы: IncludeOptional conf.d/*. Conf

Файл /etc/hosts является:

127.0.0.1   localhost 

134.122.191.221 subdomain1.domain.com

134.122.191.221 subdomain2.domain.com

Я не вижу явной ошибки в моих файлах конфигурации Apache Virtualhosts, поэтому я был бы признателен, если бы кто-нибудь дал мне подсказку о том, что это не так и о любой возможной ошибке.

Большое спасибо.

1 ответ

Решение

Вы пытаетесь настроить виртуальный хост на основе имени и пропустите важную конфигурацию:

NameVirtualHost *:80

Итак, добавьте приведенную выше строку в ваш httpd.conf и перезапустите apache/httpd, и это должно решить проблему.

NB. Согласно документации Apache 2.4, эта директива устарела и больше не нужна.

До 2.3.11, NameVirtualHost требовалось указать серверу, что конкретный IP-адрес и комбинация портов могут использоваться в качестве виртуального хоста на основе имени. В 2.3.11 и более поздних версиях каждый раз, когда комбинация IP-адреса и порта используется в нескольких виртуальных хостах, виртуальный хостинг на основе имени автоматически включается для этого адреса.

Но мне еще предстоит выяснить, почему это работает с вышеуказанной директивой.

Другие вопросы по тегам