没有负载均衡器的 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?

如何在没有负载均衡器的情况下使用配置文件在 Amazon Elastic Beanstalk 实例中配置 SSL?

Elastic Beanstalk 经典负载均衡器

Elastic Beanstalk 弹性负载均衡器名称