1

我正在尝试使用 ELB 部署一些 nodejs 站点,并且 ELB 和 EC2 实例的安全组都存在一些问题。

我想做的是允许 ELB 接受端口 80 请求并将这些请求转发到 EC2 实例上的端口 3000,我不希望 EC2 实例可以直接从 Internet 访问,它们应该只能访问(在端口 3000)通过负载均衡器。

因此,在我的公共子网中的 VPC 中,我有:

  • 设置一个将 80 (HTTP) 转发到 3000 (HTTP) 的 ELB
    • 接受来自 0.0.0.0/0 的端口 80 上的入站流量的安全组
  • 在端口 3000 上运行节点的 EC2 实例
    • 接受来自ELB 实例的安全组的3000 端口入站流量的安全组

这是行不通的。如果在 EC2 实例上我允许来自 0.0.0.0/0 的端口 3000,它可以工作。

但随后我可以使用实例的公共 IP 访问实例,而无需通过负载均衡器。

据我了解,这应该是可能的,还是我错过了什么?

谢谢,乔

4

2 回答 2

2

除了你已经拥有的,你还需要这些:

设置一个将 80 (HTTP) 转发到 3000 (HTTP) 安全组的 ELB,该安全组接受来自 0.0.0.0/0 的端口 80 上的入站流量

您还需要在端口 3000 上从 ELB 到运行 EC2 实例的私有子网进行出站访问。

这是行不通的。如果在 EC2 实例上我允许来自 0.0.0.0/0 的端口 3000,它可以工作。

这让我相信您的 EC2 实例正在您的 VPC 的公共子网中运行。它应该在 VPC 的私有子网中运行。

此外,请确保您的 ELB 正在您的 VPC 的公共子网中运行。

于 2014-02-12T08:13:10.143 回答
0

听起来LB不在VPC中,或者您的服务器所在的安全组不在VPC中。

下面附上一些图片:

LB 创建 SG创造

于 2014-02-12T01:48:04.667 回答