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