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

Posted

技术标签:

【中文标题】从 http 重定向到 https 时,cloudfront 域被应用程序负载均衡器 dns 名称替换【英文标题】:cloudfront domain replaced by application load balancer dns name when redirecting from http to https 【发布时间】:2019-06-06 06:59:06 【问题描述】:

我正在为我的应用程序使用 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(带有云端域)

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

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

【问题讨论】:

刚刚经历了这个,所有其他答案要么已经过时,要么太模糊而无法真正理解。这是一个演练:***.com/questions/69399672 【参考方案1】:

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

【讨论】:

感谢您发布此解决方案,这对我有帮助! 刚刚经历了这个,所有其他答案要么已经过时,要么太模糊而无法真正理解。这是一个演练:***.com/questions/69399672

以上是关于从 http 重定向到 https 时,cloudfront 域被应用程序负载均衡器 dns 名称替换的主要内容,如果未能解决你的问题,请参考以下文章

从 http 重定向到 https 时,从 url 中删除斜线

从 http 重定向到 https 时是不是存在潜在的数据泄漏?

如何停止从 HTTP 到 HTTPS 的重定向

使用 PHP 从 HTTP 重定向到 HTTPS

Grails 重定向控制器从 https 切换到 http。为啥?

从https重定向到http?