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

Я не могу правильно работать с виртуальными хостами в 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 - это:

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

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

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

NameVirtualHost *:80

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

N.B. В соответствии с документация apache 2.4, эта директива устарела и больше не нужна.

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

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