Apache vhost возвращает два разных сайта

Apache vhost возвращает два разных сайта

У меня настроены два поддомена на сервере (основной и промежуточный), и для промежуточного он возвращает два разных пути. Иногда он возвращает правильный ( /var/www/html_staging), но иногда (когда вы обновляете веб-браузер пару раз или когда вы переходите на подстраницу) он возвращает основной веб-сайт ( /var/www/html)

Apache 2.4 на Ubuntu 16.04

Есть 3 конфигурации vhosts, две для основного сайта и одна для staging. В конфигурации vhost есть перенаправление с http на https для порта 80.

000-default.conf:

<VirtualHost *:80>
    ServerName website.example.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    ServerAdmin [email protected]
    DocumentRoot /var/www/html


    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

default-ssl.conf:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin [email protected]
        DocumentRoot /var/www/html
        ServerName website.example.com

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

        SSLEngine on
        SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
        SSLCertificateFile /etc/apache2/ssl/*.example.com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/*.example.com.key
        SSLCACertificateFile /etc/apache2/ssl/bundle.crt

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>

промежуточный.conf:

<VirtualHost *:80>
    ServerName websitestaging.example.com
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    ServerAdmin [email protected]
    DocumentRoot /var/www/html_staging

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerName websitestaging.example.com
        ServerAdmin [email protected]
        DocumentRoot /var/www/html_staging

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

        SSLEngine on
        SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
        SSLCertificateFile /etc/apache2/ssl/*.example.com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/*.example.com.key
        SSLCACertificateFile /etc/apache2/ssl/bundle.crt

    </VirtualHost>
</IfModule>

Выходapache2ctl -S

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server website.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost website.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost websitestaging.example.com (/etc/apache2/sites-enabled/staging.conf:1)
*:443                  is a NameVirtualHost
         default server website.example.com (/etc/apache2/sites-enabled/default-ssl.conf:2)
         port 443 namevhost website.example.com (/etc/apache2/sites-enabled/default-ssl.conf:2)
         port 443 namevhost websitestaging.example.com (/etc/apache2/sites-enabled/staging.conf:15)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl 
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: 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

В чем причина такого поведения? Почему только иногда staging загружает сайт с правильного пути, а иногда — с основного пути? Основной сайт загружается правильно, это влияет только на staging.

решение1

На всякий случай, если у вас та же проблема, что описана выше. Просто перезапустите весь сервер, а не только apache. После перезагрузки сервера все работает правильно. Вероятно, был какой-то кэш или конфигурация, которые не были удалены должным образом, и это влияло на весь сервер.

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