如何将负载均衡器从 HTTP 切换到 HTTPS?

Posted

技术标签:

【中文标题】如何将负载均衡器从 HTTP 切换到 HTTPS?【英文标题】:How to switch load-balancer from HTTP to HTTPS? 【发布时间】:2022-01-23 20:56:43 【问题描述】:

我有一个 Route 53 域,它映射到一个负载平衡器,它映射到一个 NodeJS Express 服务器 (check it out here)。但它目前使用的是 HTTP,所以我想切换到 HTTPS。我也准备好了 ACM SSL 证书。

我已尝试向负载均衡器添加监听器...

但是,当我在浏览器中输入地址时,它会超时。

所以,我试着编辑这个负载均衡器对应的安全组...

但它仍然超时。

感谢您的帮助。

额外参考:

here is the video I have been watching here is the AWS docs article I have been reading

附:这可能是 API 本身的问题,即我是否必须向 API 添加任何额外的配置?

【问题讨论】:

【参考方案1】:

您当前在 HTTPS 上的侦听器无法正常工作,因为您没有将其指向与 HTTP 侦听器相同的目标。

将您的 HTTPS 侦听器的实例协议设置为 HTTP 并将其端口设置为端口 你的 API 监听 - 31315

我尝试编辑此负载均衡器对应的安全组

这也需要完成。负载均衡器的安全组必须允许 443,并且负载均衡器必须正在侦听 443。您看起来唯一缺少的部分是将负载均衡器的侦听器指向实例上正确的目标端口。

这可能是 API 本身的问题,即我是否必须向 API 添加任何额外的配置?

我不这么认为。 API 可能不关心负载均衡器是否监听 htts - 重要的是流量被发送到 API 正在监听的端口。

【讨论】:

非常感谢,成功了! 我还有一个问题 - 当我将原始域输入浏览器 (my-chat-api.com) 时,它默认为 http,而不是 https。我怎样才能让它默认转到https? 如果没有指定协议,浏览器会“猜测”http。 blog.chromium.org/2021/03/… 解释了 Chrome 最近如何开始默认使用 http 后备迁移到 https。但是要覆盖所有浏览器,您需要将 http 连接重定向到 https。最简单的方法是使用 ALB,而不是 ELB,然后您可以在 ALB 层设置一个重定向到 https 的 http 侦听器。 aws.amazon.com/premiumsupport/knowledge-center/… 经典的ELB,你必须在实例端做,所以ALB更好。

以上是关于如何将负载均衡器从 HTTP 切换到 HTTPS?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 aws 弹性负载均衡器将 http 请求强制重定向到独立乘客中的 https?

如何在 ELB 应用程序负载均衡器上将 HTTPS 重定向到 HTTP

从 http 重定向到 https 时,cloudfront 域被应用程序负载均衡器 dns 名称替换

如何让Elastic Beanstalk nginx支持的代理服务器从HTTP自动重定向到HTTPS?

将 http 重定向到 https AWS 应用程序负载均衡器

如何将负载均衡器日志实时导出到 BigQuery?