我的网站在 EC2 实例中运行,Apache2 在 80 上监听。
由于应该使用 https,因此我配置了 AWS 负载均衡器。向负载均衡器添加了 ACM 证书。
在 Route53 中的域别名中添加了负载均衡器的 DNS。
负载均衡器监听 443 并重定向到 EC2 实例的 80。
配置 EC2 安全组以仅接受来自端口 80 上的 ELB 安全组的连接。
现在的问题是,当我访问我的网站时,它显示的内容没有 js 和 css。
说,“此页面试图从未经身份验证的来源加载脚本”。
这些脚本和样式表位于 EC2 实例中。
使所有脚本、样式表和图像通过 https 加载的正确方法是什么?
答案1
如果您希望 ELB 终止 SSL,这是应用程序问题而不是服务器问题。
它终止了 ELB 上的 SSL,并将 http 传回网络服务器。因此,您的应用看到的是正常的 http 流量。ELB 为流量添加了一个特殊标头,以便让其后面的任何东西都知道该流量是 SSL,以防它想要使用 https:// 返回诸如返回链接/js/css/图像之类的内容
它返回以下标头
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto
您的应用程序必须足够智能,才能确定架构是 https 或此标头已设置为 ssl..如果不是 http。