Apache 가상 호스트는 두 개의 다른 사이트를 반환합니다.

Apache 가상 호스트는 두 개의 다른 사이트를 반환합니다.

서버에 두 개의 하위 도메인(기본 및 준비)이 구성되어 있고 준비를 위해 두 개의 다른 경로를 반환합니다. 때로는 올바른( )을 반환 /var/www/html_staging하지만 때로는(웹 브라우저를 몇 번 새로 고치거나 하위 페이지로 이동할 때) 기본 웹 사이트( /var/www/html)를 반환합니다.

우분투 16.04의 아파치 2.4

3개의 가상호스트 구성이 있는데, 두 개는 기본 웹사이트용이고 하나는 스테이징용입니다. 포트 80에 대한 vhost 구성에는 http에서 https로 리디렉션이 있습니다.

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>

stage.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

이런 행동의 이유는 무엇입니까? 스테이징이 웹 사이트를 올바른 경로에서 로드하는 경우도 있고 기본 경로에서 로드하는 경우도 있는 이유는 무엇입니까? 기본 웹사이트가 올바르게 로드되었습니다. 이는 스테이징에만 영향을 미칩니다.

답변1

위에서 설명한 것과 동일한 문제가 있는 경우를 대비해. 아파치뿐만 아니라 전체 서버를 다시 시작하십시오. 서버 재부팅 후 모든 것이 올바르게 작동합니다. 아마도 제대로 제거되지 않은 일종의 캐시나 구성이 있었고 이는 전체 서버에 영향을 미쳤을 것입니다.

관련 정보