我有一个应用程序在EC2实例中运行,该实例位于私有子网中(为了增加额外的安全性),直接从与公共子网相关联的面向互联网的NLB接收流量。
我还在公共子网中配置了NAT网关,以便私有EC2实例可以从互联网下载所需内容。
我刚刚得出以下结论:
如果我从互联网请求:http://index.html
私有EC2实例使用NAT网关发送HTTP响应,因此您需要支付NAT处理费用。
https://aws.amazon.com/vpc/pricing/
“每个通过 NAT 网关处理的千兆字节数据都需要支付数据处理费用,无论流量的源头或目的地在哪里。”“与私有子网(Web / App 服务器所在的位置)相关联的路由表具有 { - 本地; 0.0.0.0/0 - NATGateway }。如果我删除 0.0.0.0/0 条目,则无法使用 HTTP 请求访问服务器。如果我删除 NAT 网关,则会遇到同样的问题。此外,当我拥有 NAT 网关和路由表以从私有子网使用它时,当我从 Internet 进行简单的 HTTP 请求 - http:///index.html 时,我也可以在 NAT 网关的监视选项卡中看到流量。”
“有人遇到过相同的问题吗?我的理解正确吗?”
“是否有任何解决方法可以避免这种情况?我只能想到以下方法:”
将应用程序移到 Web 层(位于公共子网中),使 EC2 实例具有公共 IP,因此它不需要 NAT 网关回应每个 HTTP 请求
创建一个 Web 层,除了应用程序层之外,以便所有流量都经过 NLB <-> Web 层 <-> 应用程序层
创建一个 NAT 实例,而不是 NAT 网关,这样您就不必支付 NAT 处理费用。
谢谢!