将 CloudFront 与没有负载均衡器的单个 EC2 实例一起使用
Posted
技术标签:
【中文标题】将 CloudFront 与没有负载均衡器的单个 EC2 实例一起使用【英文标题】:Using CloudFront with a single EC2 instance without a load balancer 【发布时间】:2019-08-11 21:53:56 【问题描述】:我最近将我的 WordPress 迁移到了一个 EC2 实例。我为其附加了一个弹性 IP 地址并在我的 Route 53 中创建了一条 A 记录。但我所有的请求都是 HTTP,所以我想使用 CloudFront 将我的所有 HTTP 重定向到 https。
我创建了一个 CloudFront 分配,现在我的所有 HTTP 请求都被重定向到 https。由于我的 SSL 证书处于活动状态,因此我的网站是安全的。
但现在我的网站 (blog.insisivecloud.io) 无法加载,我收到一个 502 错误,上面写着“CloudFront 无法连接到源”。我已将 EC2 实例的公共 DNS 作为我的来源。
当我转到托管博客的 EC2 的公共 DNS 时,它工作正常。 (ec2-54-167-212-65.compute-1.amazonaws.com)
我哪里错了?
【问题讨论】:
除非您在 EC2 实例上有 SSL 证书,否则在 CloudFront 源设置中,源协议策略需要设置为HTTP
。请确认一下?
原来我在 EC2 实例上没有 SSL 证书。我用这个 WordPress 插件解决了这个问题 wordpress.org/plugins/ssl-insecure-content-fixer.
【参考方案1】:
正如官方文档所说:
对于 CloudFront 转发到此源的 HTTPS 查看器请求,您的源服务器上 SSL 证书中的一个域名必须与您为源域名指定的域名匹配。否则,CloudFront 会使用 HTTP 状态代码 502(错误网关)响应查看器请求,而不是返回请求的对象。有关详细信息,请参阅Using SSL/TLS Certificates with CloudFront. 的要求
【讨论】:
您对本段的理解是错误的:通常的做法是为子域使用不同的证书。 AWS的免费证书可以用于CloudFront dist,在EC2上加载免费证书---要使用ACM的免费证书,需要一个LB。以上是关于将 CloudFront 与没有负载均衡器的单个 EC2 实例一起使用的主要内容,如果未能解决你的问题,请参考以下文章
从 http 重定向到 https 时,cloudfront 域被应用程序负载均衡器 dns 名称替换
CloudFront、应用程序负载均衡器、EC2 获取重定向 301