我有一个域名,让我们说foo.com。 我有一个公共IP(服务器-A)的服务器。 我也有很多服务器(服务器B,服务器C,服务器D等),都连接在一个专用networking与服务器-A。 服务器B,C,D没有公共IP,但他们有他们的内部专用IP。 显然,我无法从互联网上访问Server-B,C,D。
我想要一个设置,其中foo.com应该指向服务器A,但我应该能够通过使用子域访问内部服务器。 所以b.intern.foo.com应该指向Server-B,c.intern.foo.com应该指向Server-C,d.intern.foo.com应该指向Server-C等等。
我指的是'b.intern.foo.com'应该允许我访问服务器B的所有端口,而不仅仅是HTTP端口(否则我只会使用Nginx)。 这意味着如果我在b.intern.foo.com上使用ssh,我应该访问运行在Server-B上的SSH服务器。 如果我在浏览器上打开b.intern.foo.com,它应该打到在服务器B上运行的Nginx,等等。 基本上所有的服务器B的端口应该可以通过互联网访问b.intern.foo.com。
我怎样才能做到这一点。
您正在寻求一个完全独立于协议的代理服务器,它具有类似于HTTP主机头的内容(AFAIK)不存在。
唯一看起来像这样的其他东西是一个NAT / PAT解决scheme,将需要尽可能多的公共IP地址,只是简单地使用公共IP地址。
你不能用一个公共IP地址来做你想做的事情。 当你的networking外,即使你让DNS返回一个内部节点的私人IP地址,那么公共互联网将不会为你路由。 如果你使内部节点的外部IP地址与Server-A相同,那么服务器A会认为这些数据包是为它服务的。