我已经完全想不出解决这个问题的办法了。我尝试了几乎所有针对类似问题的解决方案,但都没有成功。
我已成功使用 Elastic Beanstalk 设置了我的 Ruby on Rails 应用程序以通过 HTTPS 工作。为我的 elastic beanstalk 应用程序提供的 URL 工作正常 - 这意味着我的 SSL 证书是正确的。
我的注册域名有两个托管区域,我尝试使用 CNAME 将其路由到我的弹性 beantalk URL,但这并没有达到我想要的效果,因为 www.something.example.com 可以工作,但 www.example.com 不工作 - 这是毫无意义的。
我最初为每个托管区域使用了 A 记录,并将其设置为与我的 Ec2 实例关联的弹性 IP 地址。但问题是,我的公共 DNS 网址不是配置为 HTTPS 时可以工作。每次我尝试连接到弹性 IP 或给定的 Ec2 公共 DNS 时,都会收到“ERR_CONNECTION_REFUSED”。
以下是我的 Elastic Beanstalk 应用程序的负载平衡设置:
以下是我的负载均衡器描述中的安全组信息:
以下是该安全组的设置规则:
以下是显示设置规则的实例视图:
以下是负载均衡器的监听器设置:
我用了此解决方案设置监听器设置。
我用了此解决方案设置安全组的入站设置。
我的 production.rb 文件中有“config.force_ssl = true”。我无法使用 HTTP 访问网站,所有流量都会自动重新路由到 HTTPS。
回顾一下:
- Elastic Beanstalk 环境 URL - 正常工作(HTTPS)
- Ec2 实例公共 DNS - 不是工作(HTTPS)
- 弹性 IP - 不是工作(HTTPS)
感谢任何能提供关于正在发生的事情的见解的人。
编辑
已修复。请参阅已检查的解决方案。
答案1
解决方案:(假设 example.com 的 DNS 在 route53 中):为 example.com 的顶点(无主机名)创建 A 记录,并为别名选择 YES。
对于别名目标,使用 elastic beanstalk 的 ELB 入口点(应该有一个下拉列表可供选择)。
DNS 记录传播后,您可以通过以下方式正确访问该网站https://example.com (我通过 /etc/hosts 条目测试了这一点)。
如果您在 route53 中没有 example.com(或无法从那里获取),您将被迫创建不同的 SSL 证书,因为当前证书只能在您网站的顶端使用。*.example.com 的通配符证书将为您提供 DNS 中网站名称的更大灵活性。