我对 Amazon EC2 和网络还不太熟悉,所以如果这是一个愚蠢的问题,我提前道歉。
我想在 EC2 中创建一个具有两个子网的 VPC:用于 Web 应用程序实例的公共子网和用于数据库实例的私有子网。
问题是,我的应用程序需要多个外部 IP。实际上,我只需要从私有实例向不同的外部 IP 发起 curl 调用。每个私有实例都应该可以访问所有外部 IP。对于传入路由,一个 IP 就足够了。
使用 VPC 和 NAT 网关,我能够从私有实例到互联网页面进行 curl,但我只能将一个弹性 IP 连接到 NAT,并且我发现无法向现有 NAT 添加额外的弹性 IP。
我认为我可以通过在公共子网中的实例上放置两个代理服务器来监听两个端口并转发到弹性 IP 来实现这一点,但我无法摆脱标头中的 HTTP_X_FORWARDED_FOR。
我想这肯定是可行的。这应该类似于同一 VPC 中多个具有不同 IP 的网站的情况。有办法吗?
答案1
您可以添加多个弹性网络接口到实例,尽管实例越小,您可以拥有的接口/IP 就越少 - 某处有一个图表,但我现在找不到它。您可以将多个 EIP 附加到每个 ENI,并且可以拥有多个 ENI。
- 您自己创建的实例
- 托管 NAT 网关
您自己创建的类型将更加灵活,因为您可以添加 ENI,但可靠性可能不如 AWS 管理的 NAT 网关。我认为根据您的要求,这就是您需要的类型。
该标头通常由弹性负载均衡器添加。不确定如何删除它。
我不确定您的问题“这应该类似于同一 VPC 中具有不同 IP 的多个网站的情况。有办法吗?”。您可以在 VPC 中托管任意数量的网站,无论是在一个或多个实例上。我在一个 t2.micro 上托管五个域/网站,但大型网站可以位于 ELB 后面,并且可以有数十台或数百台服务器提供网站。我认为您需要更具体地说明您在这里想要实现的目标。