【问题标题】:How does an HTTP request reaches the web application inside an EC2 instance inside a VPC?HTTP 请求如何到达 VPC 内 EC2 实例内的 Web 应用程序?
【发布时间】:2021-11-03 10:34:58
【问题描述】:

我了解 VPC 网络内的 EC2 实例可以具有可用于连接到外部互联网的公共 IP 地址。互联网网关在上网前会将实例的私有 IP 替换为公共 IP。我的问题是,最终用户发起的请求(在浏览器中键入安装在 EC2 实例中的 Web 应用程序的 URL)如何到达正确的 Internet 网关,以便将 EC2 实例的公共 IP 转换为私有 IP实例和请求已满?我们有 EC2 实例的公网 IP,但我们必须通过 VPC 中的 Internet 网关才能访问该实例。 VPC 是否也分配了公共 IP?

VPC Wikipedia article里面有一句话,

用户可以通过向其 VPC 添加 Internet 网关来连接到 Internet,该网关会为 VPC 分配一个公共 IPv4 地址。

简而言之,对于安装在 VPC 内的 EC2 实例中的 Web 应用程序的请求是如何实现的?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-vpc


    【解决方案1】:

    简答:EC2 实例的开发人员或管理员配置将转换为内部 VPC 地址/端口的 TCP/UDP 端口列表。

    基本上,您描述的所有内容都是名为NAT 的东西,它也不仅仅针对HTTP,而是可以用于任何协议。 将所有传出数据包的源地址转换称为 SNAT,将传入数据包的目标地址转换为某个内部 IP/端口的反向过程称为 DNAT。

    【讨论】:

    • >简短回答:EC2 实例的开发人员或管理员配置将转换为内部 VPC 地址/端口的 TCP/UDP 端口列表。那么,这必须在实例配置文件中完成吗?
    • > 那么,这必须在实例配置文件中完成吗?是的,IIRC AWS 已经配置了所有必要的路由和 NAT,但防火墙过滤了所有端口。您需要在 EC2 控制台中做的唯一一件事就是为您的实例创建一个安全组并打开您的应用程序使用的端口。
    【解决方案2】:

    当您在浏览器中输入 Web 应用程序的 URL 时,有一个叫做 DNS 服务器的东西会将您的域转换为 IP 地址。

    在 AWS 中,我们有 Route 53 服务。您可以在那里注册您的域,添加托管区域和记录,以便您的域可以转换为正确的 IP 地址。

    【讨论】:

    • 解析出来的IP地址是指向EC2实例公网IP还是VPC相关的某个地址?我们有 Internet 网关,请求在到达内部实例之前需要经过该网关。
    • 解析出来的IP地址指向什么依赖你的记录。
    • docs.aws.amazon.com/vpc/latest/userguide/… 在文档中,IGW 不是你写的目的。我想你想要一个代理
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多