生产环境中的 Apache SSL 配置导致我的临时站点错误地使用 SSL

生产环境中的 Apache SSL 配置导致我的临时站点错误地使用 SSL

我以前从未设置过 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 虚拟主机。

相关内容