서버에 두 개의 하위 도메인(기본 및 준비)이 구성되어 있고 준비를 위해 두 개의 다른 경로를 반환합니다. 때로는 올바른( )을 반환 /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
위에서 설명한 것과 동일한 문제가 있는 경우를 대비해. 아파치뿐만 아니라 전체 서버를 다시 시작하십시오. 서버 재부팅 후 모든 것이 올바르게 작동합니다. 아마도 제대로 제거되지 않은 일종의 캐시나 구성이 있었고 이는 전체 서버에 영향을 미쳤을 것입니다.