私有 EC2 和 HTTP 流量中的 AWS 应用程序

2024-06-23

我有一个应用程序在私有子网的 EC2 实例中运行(以增加额外的安全性),直接从与公共子网关联的面向互联网的 NLB 接收流量。

我还在公共子网中配置了一个 NAT 网关,以便私有 EC2 实例可以从 Internet 下载所需的任何内容。

我刚刚得出下一个结论:

  • 如果我从互联网请求:http://index.html http://index.html

  • 私有 EC2 实例使用 NAT 网关发回 HTTP 响应,因此您需要为该 NAT 处理付费。

https://aws.amazon.com/vpc/pricing/ https://aws.amazon.com/vpc/pricing/

“无论流量的来源或目的地如何,通过 NAT 网关处理的每 GB 都会收取数据处理费用”

与私有子网(Web/应用程序服务器所在的位置)关联的路由表具有 { - local ; 0.0.0.0/0 - NATGateway} 如果我删除 0.0.0.0/0 条目,则对服务器的 HTTP 请求将不起作用。如果我删除 NAT 网关,我也会遇到同样的问题。 此外,当我拥有 NAT 网关和路由表以从专用子网使用它时,当我从 Internet 发出简单的 HTTP 请求时,我还可以在 NAT 网关的监控选项卡中看到流量 - http:///index .html

有人遇到过同样的问题吗?我的理解正确吗?

有什么解决方法可以避免这种情况吗?我只能想到以下几点:

  • 将应用程序移动到 Web 层(在公共子网中),以便 EC2 实例具有公共 IP,因此不需要 NAT 网关来响应每个 HTTP 请求

  • 除了应用程序层之外,还创建一个 Web 层,以便所有流量都来自 NLB Web 层 应用程序层

  • 创建 NAT 实例而不是 NAT 网关,这样您就无需为该 NAT 处理付费。

Thanks!


因此,事实证明 NLB 中存在一个奇怪的行为(错误?),需要默认路由某物以便交通返回工作。

设想:

  • 公共子网中的 NLB
  • NLB 目标组指向私有子网中的实例

将流量发送到 NLB 将not给出回应。

Add:

  • NAT网关
  • 在私有路由表中添加一条路由指向 NAT 网关

这有效。

然而,它实际上并没有使用 NAT 网关!

Instead添加 NAT 网关时,您可以创建到另一个实例的默认路由,例如:

0.0.0.0/0 -> another instance

然后,就可以连接到 NLB 了!

在幕后,VPC 网络检测到从实例发出的流量是对通过 NLB 发出的请求的响应,并且流量将被路由出 NLB。

然而,只有当有一个有效的默认路由在路由表中。该路由未被使用——网络会覆盖它,所以它指向什么并不重要。但是,它必须指向有效的资源。如果它指向未附加任何内容的 ENI,则它不起作用。在我的测试中,如果您将其指向同一个实例,它似乎也不起作用。但是,我指出了另一个例子效果很好.

AWS Support 同意这不是最好的行为,但这是目前必须配置的方式。

底线:确实如此not需要 NAT 网关。它只需要一个有效的默认路由,在路由返回流量时将忽略该路由。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

私有 EC2 和 HTTP 流量中的 AWS 应用程序 的相关文章

随机推荐

  • AFHTTPSessionManager 标头

    我试图通过设置 HTTPAdditionalHeaders 为 Content Type 设置默认标头 当我查看请求标头时 AFNetworking v 2 0 3 将其更改回来 我还尝试通过 setValue forHTTPHeaderF
  • 在 AWS elastic beanstalk 上安装 HTTPS SSL 的过程?

    我已成功安装自我认证的 SSL 以使 https 在 AWS linux EC2 上运行 然后 我在自动缩放和负载平衡环境中的弹性豆茎上尝试它 但我失败了 我所做的过程是首先启动一个新的弹性豆茎应用程序 我生成 SSL 证书的私钥和自认证公
  • 将 Flexbox 行设置为最短子元素的高度?

    我在使用 Flexbox 时遇到一些困难 目标是使行的高度与最短的子元素相同 以两张图片为例 一张的高度为 200px 另一张的高度为 120px 下面的示例按预期工作 img elements 是 flex 元素的直接子元素 row di
  • vscode( vscode-ruby + rubocop ) 如何在保存时自动更正?

    环境 vscode 版本1 19 1 1 19 1 鲁博科普 0 52 1 Darwin mbp 16 7 0 Darwin 内核版本 16 7 0 2017 年 10 月 4 日星期三 00 17 00 PDT 根 xnu 3789 71
  • JQuery Ajax POST XML 结构/过滤器链

    我想通过 AJAX 发布 XML 结构来获取过滤结果集 网络服务能够处理发布请求 但我的发布似乎有问题 ajax url ajaxurl data inputxml escape
  • 如何将 DVI 转为 tex?

    知道如何获取 DVI 文件并将其转换为 tex 吗 这类似于将 PDF 转换为 XML 的问题 即 试图将汉堡变回牛 TeX gt DVI 和 XML gt PDF 都会丢失文档结构及其语义方面的信息 它需要大量的启发式方法和大量的语料库来
  • `geom_abline` 和 `facet_wrap` 似乎不兼容

    我使用时遇到错误geom abline在同一个情节中facet wrap or facet grid 我不明白为什么 例如 Example data ex lt data frame x 1 10 y 1 10 f gl 2 5 ggplo
  • 错误:确保控制器具有无参数公共构造函数 webapi

    我正在使用 webapi unity 和 mvc 我收到错误 确保控制器具有无参数公共构造函数 我已经看到类似问题的解决方案 但仍然无法使其工作 我已经安装了 unity webapi 并且似乎拥有所有必要的参考 Microsoft Pra
  • 如何使用 webpack 注入内部版本号?

    我想将内部版本号和版本信息注入到我的项目中 因为它是使用 webpack 构建的 例如 这样我的代码就可以执行以下操作 var buildInfo require build info 生成该值的最佳方法是什么build info构建时模块
  • 使用 sed 替换多行

    我以为我理解 sed 但我想不是 我有以下两个文件 我想用一个不同的行替换 why 和 huh 行 根本没有空格 测试 txt hi why huh hi why huh 测试2 txt 1 hi why huh hi why huh 以下
  • Rxjs 订阅方法被忽略

    在将其标记为重复之前 请注意这些都不适合我 问题1 https stackoverflow com questions 38142278 subscribe method is not triggered with rxjs 问题2 htt
  • FHIR 资源的 id 和标识符有什么区别?

    The Resource实体定义一个id属性为 此工件的逻辑 ID 同时对于像这样的资源MedicationRequest还定义了一个名为identifier 描述是 外部标识符 或 企业标识符 我想知道这两个属性有什么区别 从 RESTf
  • Bash:使用参数扩展查找和替换

    我想更换输入法 find string include 圆进度 38px 30px 4eb630 和输出 输出字符串 include 圆进度 38px 30px using find string pattern replacement s
  • 分解 SQL 表中每一行的 XML

    我有一个表 其中包含两列 ID 和 XML 数据 我想分解每个 ID 的 XML 我在 XML 中提取单个值 并且所有 XML 的结构都相同 我只是不确定如何循环遍历表并将 XML 查询应用于每一行 我需要应用的查询如下 Select to
  • MSVC:手动使用 link.exe

    我正在尝试使用测试 C OpenGL SDL 项目设置名为 Waf 的构建系统 但在链接过程中遇到了一些问题 据我所知 所有库都已正确找到 并添加到链接命令中 但链接过程似乎就像库未链接一样 为了尝试调试该过程 我尝试手动运行编译 链接过程
  • Ruby 中 block 和 &block 的区别

    为什么有时我应该在接受块的函数内使用 block 而有时应该使用 block block只是一个局部变量 block是对传递给该方法的块的引用 def foo block nil p block end foo gt nil foo tes
  • Nginx - “强制”200 缓存响应而不是 304

    是否有可能以某种方式强制执行 200 缓存 响应 而不是静态文件未修改的 304 响应 如果是这样 您可能会节省大量服务器请求 并显着加快回访者的加载时间 我发现单独的 Expires 并不能正确设置行为 下面是肯定的火 Set cache
  • 从 pdf 转换时的默认 imagemagick 密度

    我们有以下代码 convert foo pdf foo tiff 这多年来一直工作良好 并且生成的 tiff 具有合理的打印质量 我们刚刚升级了 imagemagick 现在 tiff 的分辨率较低 我假设最近的 IM 升级发生了一些变化
  • 使用 Quartz.net 配置 ADOJobStore

    如何使用 Quartz net 设置工作库 他们在网站上提供的教程对我没有帮助 在此页面中虽然有步骤http quartznet sourceforge net tutorial lesson 9 html http quartznet s
  • 私有 EC2 和 HTTP 流量中的 AWS 应用程序

    我有一个应用程序在私有子网的 EC2 实例中运行 以增加额外的安全性 直接从与公共子网关联的面向互联网的 NLB 接收流量 我还在公共子网中配置了一个 NAT 网关 以便私有 EC2 实例可以从 Internet 下载所需的任何内容 我刚刚