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

Проблемы с неправильной конфигурацией vhosts в Apache 2 / Ubuntu 14.04

У меня есть различные поддомены, успешно настроенные в качестве виртуальных хостов на моем Digital Ocean Droplet. Однако по какой-то причине мой последний поддомен обслуживает другой поддомен, и я не знаю почему. Итак, если вы пойдете в selingo.mikeheavers.com он обслуживает содержание exhibitcolumbus.mikeheavers.com. Кроме того, если вы просто введете IP-адрес моей капли, она будет обслуживать exhibitcolumbus.mikeheavers.com - Я ожидал, что он будет просто служить mikeheavers.com. Что я перепутала?

Я установил оба поддомена через файл .conf и sudo a2ensite [file.com.conf]

Это содержимое selingo.mikeheavers.com.conf:

<VirtualHost *:80>
        <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>


        ServerAdmin mheavers@gmail.com
        ServerName selingo.mikeheavers.com
        ServerAlias www.selingo.mikeheavers.com
        DocumentRoot /var/www/selingo/public_html


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        LogLevel warn rewrite:trace8

        RewriteEngine On
        RewriteCond %{SERVER_NAME} =selingo.mikeheavers.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

и это Expositcolumbus.com.conf:

<VirtualHost *:80>
        <Directory /var/www/html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ServerName exhibitcolumbus.mikeheavers.com
        ServerAlias www.exhibitcolumbus.mikeheavers.com
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/exhibitcolumbus/public_html


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        LogLevel warn rewrite:trace8

RewriteEngine on
RewriteCond %{SERVER_NAME} =exhibitcolumbus.mikeheavers.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Я тоже заметил это в своем /etc/hosts файл, и я не уверен, откуда взялась первая запись - я не помню, как его настраивал:

127.0.1.1 extra extra
127.0.0.1 localhost

Я также использую letsencrypt для SSL, возможно, это вызывает проблемы? Я видел, что он также создал несколько файлов conf, но они в основном такие же, как и выше, с добавлением:

SLCertificateFile /etc/letsencrypt/live/exhibitcolumbus.mikeheavers.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/exhibitcolumbus.mikeheavers.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/exhibitcolumbus.mikeheavers.com/chain.pem

Я также установил записи A для каждого поддомена в моей капле, которые указывают на мой IP-адрес (http://107.170.120.88/), который, как ни странно, также не обслуживает мой основной домен (должно быть то, что вы видите на mikeheavers.com)

Я вижу это когда вхожу apachectl -S:

AH00112: Warning: DocumentRoot [/var/www/html] does not exist
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server exhibitcolumbus.mikeheavers.com (/etc/apache2/sites-enabled/exhibitcolumbus.mikeheavers.com-le-ssl.conf:2)
         port 443 namevhost exhibitcolumbus.mikeheavers.com (/etc/apache2/sites-enabled/exhibitcolumbus.mikeheavers.com-le-ssl.conf:2)
                 alias www.exhibitcolumbus.mikeheavers.com
         port 443 namevhost mikeheavers.com (/etc/apache2/sites-enabled/mikeheavers.com-le-ssl.conf:2)
         port 443 namevhost prototypes.mikeheavers.com (/etc/apache2/sites-enabled/prototypes.mikeheavers.com-le-ssl.conf:2)
*:80                   is a NameVirtualHost
         default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost exhibitcolumbus.mikeheavers.com (/etc/apache2/sites-enabled/exhibitcolumbus.mikeheavers.com.conf:1)
                 alias www.exhibitcolumbus.mikeheavers.com
         port 80 namevhost mosaic.mikeheavers.com (/etc/apache2/sites-enabled/mosaic.mikeheavers.com.conf:1)
         port 80 namevhost prototypes.mikeheavers.com (/etc/apache2/sites-enabled/prototypes.mikeheavers.com.conf:1)
         port 80 namevhost selingo.mikeheavers.com (/etc/apache2/sites-enabled/selingo.mikeheavers.com.conf:1)
                 alias www.selingo.mikeheavers.com
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"

Как мне распутать тот беспорядок, который я натворил?

Вы не создали виртуальный хост для обслуживания https://selingo.mikeheavers.com/. Таким образом, при доступе к этому URL-адресу Apache выбирает виртуальный хост по умолчанию, который, согласно вашему списку, является default server exhibitcolumbus.mikeheavers.com.

Вам просто нужно создать новый виртуальный хост для обслуживания этого сайта.