我有两台服务器,称为NGinxServer和AppServer。 NGinxServer是所有AppServer调用的可访问入口点。 出于安全原因,我修改了AppServer的安全组,不允许任何连接,除了那些来自NGinxServer安全组(NGinxServer-SG)的连接。 但是,当我这样做时,我无法完成从Web浏览器 – > NGinxServer – > AppServer的任何代理请求。
我可能做错了什么? 我认为NGinx代表了整个连接的持续时间,但是我只能认为,NGinx要么是阻止了被安全组规则阻止的连接,要么是AWS看到的代理stream量仍然有数据显示起源于Web浏览器,而不是NGinx,并相应地阻止它。
任何帮助是极大的赞赏。
编辑解决scheme:由Michael – sqlbot提供的评论/答案是正确的解决scheme。 我正在使用公共IP而不是私有IP 。
从VPC内部访问内部目标时使用公共IP存在以下几个问题:
作为特定安全组成员的源计算机的标识将丢失,因为stream量必须离开您的VPC并通过Internet网关返回。 在这一点上,它不再是“内部”的stream量。
更糟的是,你正在为这个stream量付费,离开你的VPC,然后付钱再次回来。
在大多数地区,这只有0.02美元/ GB,0.01美元/ GB和0.01美元/ GB,但这是一个不必要的成本,增加了一小部分的延迟。
https://aws.amazon.com/ec2/pricing/on-demand/
还要注意的是,如果你需要一个内部或外部访问的实例的主机名,那么有一些内置的DNS魔术可用。
如果您的实例的公共IP地址是203.0.113.20,并且它的公有DNS主机名如下所示:
ec2-203-0-113-20.compute-1.amazonaws.com
然后你可以像这样创build一个DNS CNAME:
my-instance.example.com CNAME ec2-203-0-113-20.compute-1.amazonaws.com.
使用此configuration,如果您在VPC中使用my-instance.example.com主机名,则会自动parsing为私有 IP,如果在外部使用,则使用公共 IP。
还要注意的是,在私人服务器的情况下,您应该在私有子网上使用NAT网关或NAT实例,当它使出站请求访问Internet时(例如下载更新,设置时钟和访问第三方蜜蜂)。
对于在可用区内跨越子网边界的stream量,不会有性能损失或收费。 它看起来像stream量通过一个额外的路由器跨越子网边界,但这个路由器不是真的有 – 在一个单一的VPC内的AZstream量穿越子网实际上不通过任何额外的设备…所以你的代理可以在公共子网中,并且这个networking服务器可以是私人的。