没有负载均衡器的 Elastic Beanstalk 别名
Posted
技术标签:
【中文标题】没有负载均衡器的 Elastic Beanstalk 别名【英文标题】:Elastic Beanstalk Alias Without Load Balancer 【发布时间】:2020-11-21 21:29:55 【问题描述】:我有一个使用负载均衡器部署的 Elastic Beanstalk (EB) 应用程序。在 Route53 中,我定义了一个别名 myapp.mydomain.com
来指向 EB url。它工作正常。
但是当我将 EB 环境类型更改为“单实例”(从“负载平衡”)时,别名不再起作用。
有没有办法为非负载平衡环境使用别名?
【问题讨论】:
EB url 无论是单实例还是负载均衡都应该有效。事实上它应该是完全一样的。因此,指向 EB url 的myapp.mydomain.com
不应该受到影响。您是否观察到 EB 网址发生了变化?或者您的应用在使用 EB url 时是否正常工作?
应用程序 URL 是相同的并且可以正常工作(不是别名)。我已将 http 重定向到 https。这是在负载平衡器设置中完成的。不确定这是否是我将环境更改为单实例时它不起作用的原因。
我明白了。那么在您在 ALB 上获得 ssl 证书之前?如果没有 ALB,您将无法在 EB 实例上部署相同的证书。是来自 ACM 的 ssl 证书吗?
证书来自 ACM,位于 *.mydomain.com
。 https 设置位于 EB 的负载均衡器部分。如果我选择单实例,则无法访问此部分,那么在这种情况下,我可以在哪里设置 https?
我稍后会详细回答。
【参考方案1】:
基于 cmets。
问题是由 ACM SSL 证书引起的。在负载平衡的 EB 环境中,SSL 证书部署在 ALB 上。这为您的环境提供了 HTTPS 功能。
单实例 EB 环境没有任何负载平衡器。因此,您必须直接在您的 EB 实例上提供 SSL 证书。但是,ACM ssl 证书不能在实例上使用。
要纠正问题,您有两种选择:
将 CloudFront 分发版放在您的 EB 前面:Using Elastic Beanstalk with Amazon CloudFront。在 CF 发行版上,您可以安装 ACM ssl 证书。问题是您将进行以下设置:client----HTTPS (ACM SSL cert)---->CF----HTTP---->EB
如您所见,在 CF 和您的 EB 实例之间您将有 HTTP 流量,这可能是不希望的。要解决此问题,您不能使用自签名证书或 ACM 证书。您需要来自第三方的public ssl 证书,例如免费的https://letsencrypt.org/。
这将我们带到第二个选项:
直接在您的实例上安装新的公共证书。 ACM ssl 证书不能在实例上使用。您需要来自第三方的新的。一个流行的选择是https://letsencrypt.org/。您必须在 EB 实例上配置 nginx 以提供 ssl 证书;随后,为您提供 HTTPS 功能。使用此选项,您将拥有:
client----HTTPS (third party SSL cert)---->EB
【讨论】:
以上是关于没有负载均衡器的 Elastic Beanstalk 别名的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk 在配置菜单中没有负载均衡器设置
AWS Elastic Beanstalk - NodeJS:在没有 Beanstalk 负载均衡器的情况下从 Letsencrypt 获取证书 SSL
是否可以在没有负载均衡器的情况下使用带有 SSL (HTTPS) 的 Amazon Elastic Beanstalk?