VirtualHost с двумя доменами не работает

Я не могу настроить два домена с помощью VirtualHost, потому что мне всегда показывается только один домен. Я имею в виду, что если я посещаю domainB.com, который перенаправляет меня на domainA.com и domainA.com, работает нормально. Я сделал эту процедуру на других хостах, таких как: DigitalOcean или мой собственный локальный хост, но с этим экземпляром я не могу найти проблему. Если я отключу один сайт, другой работает без проблем.

У меня есть экземпляр Google с Ubuntu 17.10 и Apache2 с двумя доменами (виртуальный хост). Я отключил виртуальный хост по умолчанию. Моя структура папок: /var/www/domainA/ и /var/www/domainB/

Облачный DNS настроен с двумя зонами domainA.com и domainB.com с записями A и CNAME, указывающими на мой IP-адрес сервера. У меня тоже NS записи указывали на googledomains.com и в моем реестре я добавил эти DNS.

Если я пингую оба домена, они без проблем корректно разрешаются на мой IP-адрес.

У меня есть два домена, настроенные на сайтах:

#in /etc/apache/sites-available/domainA.com.conf
<VirtualHost *:443>
        ServerAdmin [email protected]
        ServerName domainA.com
        ServerAlias www.domainA.com
        DocumentRoot /var/www/domainA

        ErrorLog ${APACHE_LOG_DIR}/error-domainA.log
        CustomLog ${APACHE_LOG_DIR}/access-domainA.log combined

        SSLEngine on
        SSLCertificateFile /etc/apache2/sslcert/certified-number.crt
        SSLCertificateKeyFile /etc/apache2/sslcert/domainA.com.key
        SSLCertificateChainFile /etc/apache2/sslcert/gd_bundle-g2-g1.crt

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /var/www/domainA/>
            Options FollowSymLinks
            AllowOverride All
        </Directory>

        <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
        </Directory>
</VirtualHost>

#in /etc/apache/sites-available/domainB.com.conf
<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName domainB.com
        ServerAlias www.domainB.com
        DocumentRoot /var/www/domainB

        ErrorLog ${APACHE_LOG_DIR}/error-domainB.log
        CustomLog ${APACHE_LOG_DIR}/access-domainB.log combined

        <Directory /var/www/domainB/>
                Options FollowSymLinks
                AllowOverride All
        </Directory>
</VirtualHost>

Результат команды apachectl -S:

судо apache2ctl -S

VirtualHost configuration:
*:80                   domainB.com (/etc/apache2/sites-enabled/domainB.conf:1)
*:443                  domainA.com (/etc/apache2/sites-enabled/domainA.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

Какие еще настройки я должен проверить?

ОБНОВЛЕНИЕ ИНФОРМАЦИИ: если я попробую использовать www для домена A, все будет нормально.

  • www.domainA.com -> Работает
  • domainA.com -> Не работает, перенаправление на domainB.com
  • www.domainB.com -> Работает
  • доменB.com -> Работает

person José Ayrám    schedule 01.08.2019    source источник
comment
Вам нужен доступ к domainA.com как через http, так и через https? В этом случае вам нужно будет добавить отдельный VirtualHost для domainA.com, прослушивающий порт 80 в дополнение к порту 443. Вероятно, он должен перенаправлять на хост https. Два порта имеют совершенно разные списки VirtualHost.   -  person Matt Raines    schedule 01.08.2019
comment
Спасибо @MattRaines. Я добавил этот параметр, как вы описываете, и он отлично работает.   -  person José Ayrám    schedule 01.08.2019


Ответы (1)


У меня была только конфигурация VirtualHost на порту 443 для domainA.com.

Добавил конфигурацию *:80 с переадресацией на ssl и работает. Как это:

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName domainA.com
        ServerAlias www.domainA.com
        Redirect / https://www.domainA.com/
</VirtualHost>

Спасибо Мэтту Рейнсу за его комментарий.

person José Ayrám    schedule 07.08.2019