Apache Vhost не работает

Apache Vhost не работает

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

Пример: Я перехожу на домен "b.com" и получаю веб-сайт, который должен отображаться для "a.com". Однако с "a.com" все работает. Запрос от "b.com" также сохраняется в журнале от "a.com" и там также указано, что я перешел на "a.com".

Управление DNS осуществляется Cloudflare. Каждый домен имеет TXT-запись с его доменным именем.

Вы можете помочь мне?

Я уменьшил свои конфигурации до минимума. Итак, вот 2 файла.

Первая конфигурация:

<VirtualHost a.com:80>
  Servername a.com
  DocumentRoot /var/www/a.com
</VirtualHost>

Вторая конфигурация:

<VirtualHost b.com:80>
  Servername b.com
  DocumentRoot /var/www/b.com
</VirtualHost>

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

решение1

Параметр for <VirtualHost ...>сообщает веб-серверу, какойлокальный IP-адресдля привязки. Даже если вы укажете имя, оно будет использоваться только для разрешения IP-адреса. (Например, оно используется, когда сервер имеет много IP-адресов, а каждый домен имеет выделенный IP-адрес.)

Большинство vhosts основаны на имени, а не на адресе, поэтому этот параметр бесполезен, и *вместо него следует просто указать подстановочный адрес. Вместо этого веб-сервер Apache различает vhosts по их параметрам ServerNameи .ServerAlias

Стандартvhost на основе имениКонфигурация выглядит так:

<VirtualHost *:80>
    ServerName a.example.tld
    DocumentRoot /var/www/a
</VirtualHost>

<VirtualHost *:443>
    ServerName a.example.tld
    DocumentRoot /var/www/a
    SSLEngine On
    SSLCertificateFile [...]
</VirtualHost>

---

<VirtualHost *:80>
    ServerName b.example.tld
    DocumentRoot /var/www/b
</VirtualHost>

<VirtualHost *:443>
    ServerName b.example.tld
    DocumentRoot /var/www/b
    SSLEngine On
    SSLCertificateFile [...]
</VirtualHost>

Если сервер должен предоставлять как HTTP, так и HTTPS, то вам все равно нужно определить vhost для каждого порта (:80 и :443). Нужно ли вам это или нет, зависит от вашей конфигурации Cloudflare.

Если вы используетестарыйДля версий Apache, таких как v2.2 или более старых, вам дополнительно понадобятся следующие опции (их больше нет в v2.4 или более новых):

NameVirtualHost *:80
NameVirtualHost *:443

Связанный контент