我有一个 3 层部署(Web 服务器、应用程序、数据库)。我在 Web 服务器(Apache)上应用了 SSL 证书。应用服务器上还有另一个基于 PHP 的应用程序。此应用程序的请求通过文件中的 ProxyPass 指令从 Web 服务器路由virtualhost.conf
。
当我从应用程序服务器请求应用程序时,出现“混合内容”错误(通过 https 连接提供 http 内容)。
我的问题:
1. 我是否需要应用程序服务器上的 SSL 证书?
2. 如何消除此错误?
答案1
- 是的,一旦您想要建立安全连接,您就需要在应用服务器上拥有 SSL 证书。
在应用服务器上安装证书并为此服务器添加虚拟主机设置,如下所示:
<VirtualHost *:443>
ServerName app.yourdomain.tld SSLProxyEngine On ProxyPass / https://app.yourdomain.tld/ ProxyPassReverse / https://app.yourdomain.tld/
</VirtualHost>
问题是,您的安全网站可能有自己的域名,而您尝试将其中的代码嵌入到您的 https 网站中。在这种情况下,浏览器会警告用户部分连接未加密。
您可以先使用免费证书(例如 StartSSL)尝试一下。
答案2
如果您在代码中混合使用 http 和 https,则可能会发生这种情况,我认为阅读以下文章会对您有所帮助: 如何成为极客文章