如何在ELB内部设置SSL并与ELB外部的节点实例通信

时间:2017-08-18 07:14:15

标签: node.js amazon-web-services ssl amazon-ec2 amazon-elb

我在AWS上创建了一个架构(希望它不应该是错的),使用ELB,自动调节,RDS和ELB外部的一个节点ec2实例。现在我不知道如何在这个架构上实现SSL。

让我简要解释一下:

  1. 我创建了一个经典负载均衡器。
  2. 在自动缩放组上创建。
  3. 将实例分配给自动缩放组。
  4. 最后我创建了一个我用于节点的实例,它位于Load Balancer和Autoscaling组之外。
  5. 现在,当我将SSL实施到我的Load Balancer时,内部实例正在与HTTP请求上的节点实例进行通信,并且因为节点实例位于负载均衡器之外,因此请求被阻止。

    有人可以帮我实现此架构的SSL。

    很抱歉,如果你对我的架构感到困惑,如果还有其他最好的架构,那么请告诉我,我可以改变我的架构。

    谢谢,

3 个答案:

答案 0 :(得分:2)

当您拥有静态内容时,最好的选择是使用 S3 存储桶作为其来源,从 Cloudfront 提供服务。

关于 SSL ,您可以在 ELB 级别设置 SSL ,然后按the documentation

ELB 会侦听两个端口: 80 443 ,并仅使用其开放端口80与 ASG实例进行通信。 因此,当安全请求进入 ELB 时,它会将它们转发到您的服务器( ASG 中的 EC2 )。然后,监听端口 80 的服务器收到请求;如果请求具有 X-FORWARDED-PROTO HTTPS,则服务器不执行任何操作,否则设置它并将URL转发/重写为安全URL并重新启动进程。

我希望这有助于并注意ERR_TOO_MANY_REDIRECTS

答案 1 :(得分:0)

您是否考虑过将Application Load Balancertarget groupslistener rule一起使用?

如果单个EC2实例只是托管静态内容,并且在公共路径上提供内容(例如/static),则所有内容都可以位于共享负载均衡器后面,其中包含一个可以使用{配置的公共证书{3}}

答案 2 :(得分:0)

  

"因为节​​点实例在负载均衡器之外所以请求   被阻止了。"

如果他们在同一个VPC中,您应该检查您已分配给实例的安全组。具体而言,您可能希望允许从分配给负载均衡器实例的安全组访问进入独立实例的端口443和/或80的连接 - 让我们调用这些&和#39; SG-load_balancer' (检查您的AWS控制台以查看实际的安全组ID是什么)。

要检查此项 - 选择独立实例的安全组,请注意页面底部的选项卡。点击' Inbound'标签。您应该会看到一组规则......您要确保有一个规则用于HTTP和/或HTTPS,以及“来源”和#39;来源'而不是将IP地址放入负载均衡器实例的安全组 - 它将以([0-2]{0,1}[0-9])([AaPp][Mm])开头,控制台将为您提供一个下拉列表以显示有效条目。

如果您没有看到负载均衡器实例的安全组,那么他们很可能不在同一个VPC中。要检查 - 打开控制台并在每个节点上查找VPC ID。那将以sg-开头。这些应该是一样的。如果不是,您必须设置规则和路由表以允许它们之间的流量...这更复杂一些,看看类似的问题以获得有关如何解决该问题的一些想法:{ {3}}