创build映射到专用IP空间的公用DNS

我试图创build一个设置,我有一个面向公众的IP地址,它提供给几个不同的内部服务器,每个服务器在私有IP空间中都有一个唯一的IP地址 – 路由由入站域请求决定(类似于Apache虚拟主机,但所有的stream量 – 不只是HTTP)。 我需要哪些服务来创build上述内容? 代理服务器,负载平衡器等?

你已经对你的问题作出了巨大的改变,完全放弃了EC2的方面,但是这里是我的新的回应:

我认为您需要了解DNS的工作原理以及虚拟主机的工作方式。 DNS用于将主机名转换为IP地址(或一组IP地址)。 一旦应用程序有一个IP地址与DNS交谈不再涉及。

虚拟主机是由HTTP协议(版本1.1及更高版本)启用的function。 当联系IP地址时,客户端传入他们想要请求的主机名。 您的代理服务器需要设置为了解HTTP并映射到不同的后端服务器。

大多数其他IP协议没有这个function,所以没有办法做你所要求的。 例如,当你ssh到服务器时,在DNS查找之后没有涉及主机名。

这就是说,这听起来像你有一个特殊的问题要解决。 而不是假定IP地址路由是答案,那么询问你在高层做什么,看看有哪些人想出来? 我build议在一个新的问题开始。


我在原来的回答下面留下了一些似乎是你原来的问题。

你想要做的是不清楚你的问题的措辞。 以下是对可能的问题的一些答案:

在Amazon EC2上“保存IP地址”是不可能的。 每个实例使用一个公有IP地址,无论您是否允许从Internet访问它。

EC2已经拥有专用IP地址的专用DNS名称,但是它们本身并不比专用IP地址更有用。

欢迎您在EC2内部或外部运行您自己的DNS服务器。 有一些DNS服务软件包支持代码插件,您可以根据algorithmdynamic确定生成的IP地址。

如果您从EC2主机parsingEC2实例公有DNS名称,则Amazon将返回私有IP地址,以便您的networking更快,更便宜。 有关此function的更多信息,请参阅我写的这篇文章:

使用弹性IP识别Amazon EC2上的内部实例
http://alestic.com/2009/06/ec2-elastic-ip-internal

作为传入连接的一部分,您的应用程序协议需要能够发信号通知他们要使用哪个后端服务器。 HTTP使用“基于名称的虚拟主机”来执行此操作(如您所识别的),Web服务器使用请求中的Host头来确定请求中使用了哪个名称,然后决定在哪里发送请求。 其他一些现有的协议也可以在某种程度上实现这一点(FTP,所有的东西都有一个等价的机制),但是它必须在应用层完成 – 你不能在IP层处理这个问题,没有足够的信息。

老实说,如果这只是针对几个不同的领域,而且您正在使用不支持基于名称的信号传输的协议,那么使用多个IP地址并将每个名称绑定到自己的名称地址。 这对于EC2来说是令人讨厌和痛苦的,因为每个IP实例都有一个弹性的限制(你真的不想使用实例IP来面向公众服务;这只会让你的用户感到悲伤的pandas下线)。

听起来就像你刚才需要一个反向代理,如nginx / haproxy / varnish在前面,按域(URL)分发请求到你的后端实例。