Node.js 如何为ELB内的实例设置SSL,以及如何与ELB外的节点实例通信

Node.js 如何为ELB内的实例设置SSL,以及如何与ELB外的节点实例通信,node.js,amazon-web-services,ssl,amazon-ec2,amazon-elb,Node.js,Amazon Web Services,Ssl,Amazon Ec2,Amazon Elb,我已经通过使用ELB、autoscaling、RDS和ELB之外的一个节点ec2实例在AWS上创建了一个体系结构(希望它不会错)。现在我不知道如何在这个体系结构上实现SSL 让我简单解释一下: 我创建了一个经典的负载平衡器 在自动缩放组上创建 将实例分配给自动缩放组 最后,我创建了一个用于节点的实例,它位于负载平衡器和自动缩放组之外 现在,当我将SSL实现到负载平衡器时,内部实例正在HTTP请求上与节点实例通信,因为节点实例在负载平衡器之外,所以请求被阻止 有人能帮我实现这个架构的SSL吗 很抱

我已经通过使用ELB、autoscaling、RDS和ELB之外的一个节点ec2实例在AWS上创建了一个体系结构(希望它不会错)。现在我不知道如何在这个体系结构上实现SSL

让我简单解释一下:

  • 我创建了一个经典的负载平衡器
  • 在自动缩放组上创建
  • 将实例分配给自动缩放组
  • 最后,我创建了一个用于节点的实例,它位于负载平衡器和自动缩放组之外
  • 现在,当我将SSL实现到负载平衡器时,内部实例正在HTTP请求上与节点实例通信,因为节点实例在负载平衡器之外,所以请求被阻止

    有人能帮我实现这个架构的SSL吗

    很抱歉,如果你对我的架构感到困惑,如果还有其他最好的架构,请让我知道我可以更改我的架构


    谢谢,

    您是否考虑过使用带2和a的a


    如果单个EC2实例只是承载静态内容,并且在公共路径(例如,
    /static
    )上提供内容,则所有内容都可以位于共享负载平衡器后面,并具有一个可配置的公共证书。

    当您有静态内容时,您最好的选择是从Cloudfront使用S3桶作为它的来源

    关于SSL,您可以在ELB级别设置SSL,如下所示

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

    我希望这会有所帮助,并小心错误太多的重定向

    “因为节点实例在负载平衡器之外,所以请求 正在被封锁。”

    如果它们位于同一VPC中,则应检查已分配给实例的安全组。具体来说,您需要允许从分配给负载平衡器实例的安全组访问到独立实例上端口443和/或80的连接-让我们称这些为“sg-load_balancer”(检查AWS控制台以查看实际的安全组id)

    要选中此选项,请选择独立实例的安全组,注意页面底部的选项卡。单击“入站”选项卡。你应该看到一套规则。。。您需要确保在“源”中有一个用于HTTP和/或HTTPS的安全组,而不是将IP地址放在负载平衡器实例的安全组中——它将从
    sg-
    开始,控制台将为您提供一个下拉列表以显示有效条目


    如果您没有看到负载平衡器实例的安全组,则很可能它们不在同一VPC中。检查-打开控制台,查找每个节点上的VPC Id。这将从vpc开始。这些应该是相同的。如果没有,您将不得不设置规则和路由表,以允许它们之间的通信。。。更复杂的是,看看一个类似的问题,了解如何解决这个问题:

    您的EC2是否在Autoscaling group/ELB之外用于托管静态节点代码?是的,它包含静态节点编码我建议使用S3 bucket托管静态内容。使用CloudFront并将S3存储桶设置为原点。您来自其他实例的请求可能会访问CloudFront发行版,该发行版也会处理SSL。事实上,这不仅仅是一个文件,因此无法在S3上移动。我认为您需要打开您的安全组以允许在这些实例之间进行访问-根据我下面的回答。也就是说,您可以使用任意数量的文件移动到S3。您只需将它们构建为文件系统中的网站。正如其他人所说,您也可以在此配置中设置SSL。这可能是最有效/成本最低的方法。我已经在ELB上尝试过SSL。请把问题再读一遍。我的问题是我有一个节点实例(ec2即实例1)和两个前端实例(ec2服务于php和reactjs即实例2和实例3)。现在,我的实例2和实例3位于elb中(这有SSL),而实例1(节点ec2)位于elb之外。所以,当实例2和实例3试图与实例1通信时,我遇到了问题。请具体说明您所说的通信是什么意思?日志中有什么有用的错误吗?