AWS Application Load Balancer HTTP到HTTPS与EC2实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS Application Load Balancer HTTP到HTTPS与EC2实例相关的知识,希望对你有一定的参考价值。

我有一个在Ubuntu上运行Node.Js服务器的EC2实例。

我的目标是:

  1. 将我的托管区域连接到EC2实例
  2. 将所有传入流量从端口80路由到端口3000(因为我的服务器在端口3000上运行)
  3. 最重要的是使用应用程序负载均衡器将所有请求转发到HTTPS(我已在证书管理器中创建了SSL证书)。

目前,我只能在端口3000(Public Ip)上使用EC2 intances'http://prntscr.com/livali打开网站。 Https请求或Http到端口80不起作用(http://prntscr.com/livau2)。 Altought a使用实例'A在我的托管区域创建了Public Ip记录,无法通过托管区域(http://prntscr.com/liv9no)打开实例。

我真的很困惑,因为我无论如何都无法让它运行起来。我真的很感激有关如何设置这一切的分步指南。

答案

如果您已拥有SSL证书,则仅使用端口443而不是端口80是安全的。

1)创建面向应用程序负载均衡器的Internet,该应用程序负载均衡器侦听端口443并将流量路由到端口3000上的EC2实例。

2)在HTTP https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#redirect-actions上访问您的域时,将用户重定向到HTTPS

2)添加A记录,将您的域名指向Load Balancer的公共DNS。

另一答案

这些是Web服务器问题而不是DNS问题。您需要设置像nginx或Apache这样的东西来将端口80代理到端口3000.有关信息,请参阅Apache redirect to another port

您还可以在Apache中使用重写规则强制HTTPS:https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

强制HTTPS的另一个选择是创建CloudFront分配并使用它。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html

以上是关于AWS Application Load Balancer HTTP到HTTPS与EC2实例的主要内容,如果未能解决你的问题,请参考以下文章

AWS Application Load Balancer 向不健康的目标组/实例发送请求

AWS - ECS + Application Load Balancer的思考

Socket.io + Nginx + AWS Application Load Balancer 连接在建立之前关闭

AWS CloudFormation:Application Load Balancer 的目标组不适用于多个 EC2 实例

如何使用 .ebextensions 将 Application Load Balancer 固定响应添加到 AWS Elastic Beanstalk

将 https 侦听器添加到 AWS Application Load Balancer 时出现问题