我以前从未设置过 SSL,我认为我已经设置好了,一切正常,但现在我遇到了一个奇怪的问题。假设我的网站名为 www.example.com。我在同一台服务器上还有一个 staging.example.com 网站。不久前使用 staging 的人实际上正在编辑生产网站。经过一番调查,我发现https://staging.example.com实际上是 www.example.com!通过使用 HTTPS,它默认为生产站点。
我假设问题是,如果你输入服务器的 IP 地址,它会调出生产站点,而 https 只会将人们引导到该站点。有没有办法解决这个问题或禁用 HTTPS 进行暂存?谢谢。
答案1
为了防止某人使用 访问生产站点https://staging.example.com
,您需要将这些请求与生产请求分开。
更简单的方法是这样的:
NameVirtualHost *:443
#existing SSL vhost
<VirtualHost *:443>
ServerName production.example.com
SSLEngine on
#...
#all of your existing config
#...
</VirtualHost>
#staging - will deny all requests
<VirtualHost *:443>
ServerName staging.example.com
SSLEngine on
SSLCertificateFile /cert/file.pem
#...
#other SSL config, logging, etc
#...
Order allow,deny
Deny from all
</VirtualHost>
如果由于某种原因你不能使用NameVirtualHost
,你也可以使用一些mod_rewrite来获得相同的效果(但效率稍低):
RewriteEngine on
RewriteCond %{HTTP_HOST} ^staging [NC]
RewriteRule ^ - [F]
答案2
HTTPS 不支持虚拟主机。当您访问 HTTPS 站点时,无论您输入什么域名,您都会获得该 IP 的默认 SSL 虚拟主机。