AWS Aplication负载均衡器HTTP到具有EC2实例的HTTPS

时间:2018-11-15 20:23:00

标签: amazon-web-services amazon-ec2 https amazon-route53 amazon-elb

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

我的目标是:

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

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

我真的很困惑,因为我无法以某种方式启动并运行它。我将非常感谢您逐步指导如何设置整个过程。

2 个答案:

答案 0 :(得分:3)

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

1)创建一个面向Internet的Application Load Balancer,它侦听端口443并将流量路由到端口3000上的EC2实例。

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

2)添加A记录,以将您的域名指向负载均衡器的公共DNS。

答案 1 :(得分:0)

这些是Web服务器问题,而不是DNS问题。您需要设置NGINX或Apache之类的东西,以将端口80代理到端口3000。有关信息,请参见Apache redirect to another port

您还可以在Apache:https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

中使用重写规则来强制HTTPS。

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