サーバーに 2 つのサブドメイン (メインとステージング) が設定されており、ステージングでは 2 つの異なるパスが返されます。正しいパス ( ) が返されることもありますが、(Web ブラウザーを数回更新したり、サブページに移動したりしたとき) メインの Web サイト ( )/var/www/html_staging
が返されることもあります。/var/www/html
Ubuntu 16.04 上の Apache 2.4
3 つの vhosts 構成があり、2 つはメイン Web サイト用、1 つはステージング用です。ポート 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>
デフォルトの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
この動作の理由は何ですか? ステージングが正しいパスから Web サイトをロードする場合と、メイン パスからロードする場合とがあるのはなぜですか? メイン Web サイトは正しくロードされましたが、これはステージングにのみ影響します。
答え1
念のため、上記で説明したのと同じ問題が発生する場合は、Apache だけでなく、サーバー全体を再起動してください。サーバーの再起動後、すべてが正常に動作します。おそらく、何らかのキャッシュまたは構成が適切に削除されておらず、それがサーバー全体に影響を及ぼしていた可能性があります。