2

我正在为我的应用程序使用 AWS cloudfront 和 AWS 应用程序负载均衡器 (ALB)。Alb 为端口 80 和 443 的两个侦听器配置,都将流量转发到 HTTP(默认规则)上的单个目标组(实例类型)。Cloudfront 设置为使用 ALB 作为具有给定设置的源。源协议策略 = HTTP,交付方法 = Web,查看器协议策略 = HTTP & HTTPS& 使用默认的 cloudfront ssl 证书。

由于我的 ALB 正在侦听端口 80 和 443,因此我的应用程序在 http 和 https 上都运行良好。现在,当我编辑端口 80 的侦听器的默认规则以将流量重定向到端口 443(之前设置为转发到 80 上的目标组,如前所述)以进行 https 重定向时,我的云端域被我的 ALB 域替换,并且资源(css ,图像等)无法加载。

例如,在重定向资源 URL 之前 - daxxxxxxxxxxxx.cloudfront.net/media/jdfghusfe/abc.png(使用云端域)

重定向后 -
资源的 URL -main-albxxxxxx-amazonaws.com/media/jdfghusfe/abc.png

任何人都可以帮忙吗?提前致谢。

4

1 回答 1

4

好的,我们已经解决了这个问题。首先,我们没有绕过 Host 标头。因此,为了使其正常工作,我们将“基于选定请求标头的缓存”设置为白名单和白名单主机标头。(要了解更多信息,请参阅此答案AWS Cloudfront + Load Balancer, url changes from main domain to load balancer subdomain)现在,当主机设置正确时,我们要么遇到无限重定向循环,要么遇到错误的证书错误。为了摆脱这种情况,我们改变了 CDN(云端)与负载均衡器建立连接的方式。以前只能通过 HTTP 来避免证书出现任何问题。但现在这是不可能的,因为我们从 HTTP 重定向,它会创建一个无限的重定向循环。所以我们HTTPS在 CDN <-> ALB 连接中配置(更新 Origin Protocol Policy 为HTTPS)。为了绕过证书问题,将xxxxx.cloudfront.net域更改为cdn.mysite.com(在 route53 配置中使用 CNAME)并添加了用于 *.mysite.com 的自定义证书。

于 2019-01-15T05:43:13.570 回答