从 http 重定向到 https 时,云端域被应用程序负载均衡器 dns 名称替换

cloudfront domain replaced by application load balancer dns name when redirecting from http to https

我正在为我的应用程序使用 AWS cloudfront 和 AWS 应用程序负载均衡器 (ALB)。 Alb 为端口 80 和 443 配置了两个侦听器,都将流量转发到 HTTP 上的单个目标组(实例类型)(默认规则)。 Cloudfront 设置为使用 ALB 作为源,它具有给定的设置。 源协议策略 = HTTP, 交付方式=网络, 查看器协议政策 = HTTP & HTTPS & 使用默认的云端 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

有人可以帮忙吗? 提前致谢。

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

的自定义证书