AWS Elastic Beanstalk HTTPS
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk HTTPS【英文标题】: 【发布时间】:2018-08-14 09:49:23 【问题描述】:我可以编码,但我对服务器或 DNS 设置一无所知。
我发现我可以轻松地使用 beanstalk 来启动我正在开发的应用程序,但我不完全了解如何正确创建 DNS 条目和启用 HTTPS。
在 Route 53 中,我能够成功创建“托管区域”,将我的域指向亚马逊的四个名称服务器,并创建两条 A 记录。我为“domain.tld”和“www.domain.tld”创建了一个 A 记录,并为每个我选择“yes”作为别名,“yes”作为评估目标运行状况。对于别名的每条 A 记录,我输入了他们为我在 Beanstalk 中创建的应用程序提供的长“environment.key.region2.elastickbeanstalk.com”URL。
令我惊讶的是,一切正常,访问 domain.tld 或 www.domain.tld 进入根 index.php 文件。有一个更好的方法吗?我不确定我所做的是否是正确的方法。
另外,我的问题的第二部分:如何设置 HTTPS? - 我观看了一个 YouTube 视频,该人转到“服务”>“证书管理器”输入“*.domain.tld”,我这样做了,选择了 DNS 验证,按照它的要求创建了 CNAME 记录,状态成功更新为“已发布” ”,我回到 beanstalk > 配置 > 负载均衡器并在“安全 elb 侦听器”下选择 HTTPS 作为协议并选择“*.domain.tld”作为我的证书。
所以现在当我访问 www.domain.tld 或 domain.tld 时,什么也没有发生。如果我转到https://www.domain.tld,它会显示证书,但如果我转到https://domain.tld,它会显示“连接不是私有的 NET::ERR_CERT_COMMON_NAME_INVALID”点击继续输入消息。
一般来说,我希望所有内容都自动转到https://domain.tld,而无需有人输入 https://
我必须将环境类型更改为“负载平衡”才能查看“https/certificate”设置,但我也希望能够在“单个实例”上使用 https。
另外,在对 Route 53“DNS 内容”进行更改时,我是否需要重新启动我的应用程序?
【问题讨论】:
【参考方案1】:1) 您的 Route53 -> EB 设置听起来不错。
2) 您在尝试浏览到https://domain.tld 时看到的证书问题是因为您的证书仅涵盖*.domain.tld
,不包括domain.tld
。您可以重新颁发证书以涵盖两者。
3) 如果您想将http://domain.tld
重定向到https://domain.tld
,您需要在您的网络服务器(apache、nginx 等)中执行此操作,因为 DNS 不在协议级别运行。
4) 如果您想直接在 EB 实例上而不是在负载均衡器上使用证书,那么您必须安装证书并适当地配置您的 Web 服务器。如果您能负担得起保留负载平衡器的费用,那将是一个更简单的解决方案。
5) 更改 DNS 后,您无需重新启动应用。
【讨论】:
好的,我创建了一个新的单一证书,其中包含通配符和非通配符。 EB 是否代表 Elastic Beanstalk?是的,我希望证书直接在上面。我想?所以你是说只使用我的 .htaccess 文件并将所有内容重定向到 https?如果这样做,我可以在“单实例”和“负载平衡”之间切换而不对 beanstalk 配置进行任何更改吗? EB 是 ElasticBeanstalk 的常用缩写。如果您不想使用弹性负载均衡器,那么您需要自己配置在您的 EB 实例上运行的 Web 服务器 - 您需要使用.ebextensions
配置文件来完成此操作,如 @987654322 中所述@。如果您手动配置您的网络服务器,那么您的更改将不会在自动缩放扩大或缩小您的环境时持续存在。
感谢您的回复。我试图尝试这个:docs.aws.amazon.com/elasticbeanstalk/latest/dg/… 但事实证明,如果我在“单实例”和“负载平衡”之间切换,我的 EB 应用程序会一直崩溃:(
嗯,这很奇怪。无论如何,我建议您采用负载平衡路线 - 它会增加一点成本,但设置起来要容易得多。以上是关于AWS Elastic Beanstalk HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CLI 安装错误