通过NAT路由器将不同的主机名转发到不同的内部IP地址

我有一个公共IP地址,一个路由器和路由器后面的多个服务器。

我想通过路由器将不同的域(全部使用HTTP)转发到不同的服务器。

例如:

example1.com => 192.168.0.110 example2.com => 192.168.0.120 foo.example2.com => 192.168.0.130 bar.example2.com => 192.168.0.140 

我知道这可以使用端口转发来完成,但是我需要在端口80上运行的所有主机。

我发现了一些关于IP Masquerading的信息,但是我发现这很难理解,而且我不确定这是否是我之后的事情。

我find的另一个解决scheme是将所有stream量引导到反向代理服务器,反向代理服务器将请求转发到适当的服务器上。 那么iptables呢?

我正在使用一个Billion 7404 VNPX路由器。 有这个路由器可以做到这一点的function吗?

这些是我唯一的select吗? 我完全错过了什么吗? 其他人推荐吗?

我已经四处搜寻,但我不认为我正在打正确的关键字。

最好的解决scheme是使用HTTP反向代理。 为此,您可以使用:

  • Apache与mod_proxy
  • 乌贼
  • nginx的

我们正在使用mod_proxy的Apache,但我想用英镑去。

作为硬件设备,您可以使用思科内容服务交换机。 请参阅: http : //www.cisco.com/en/US/products/hw/contnetw/ps792/index.html

我有一个想法,我想知道是否有人对此有一些反馈。

如果我使用反向代理的想法,我想我可以很简单地解决这个问题。 我已经在其他服务器上使用Nginx了,所以这是我select反向代理的服务器。

在路由器上,我将把端口80上的所有传入连接转发到我的反向代理服务器。 我将使用以下configuration文件在此服务器上运行Nginx:

 server { listen *:80; location / { proxy_pass http://$host; } } 

这似乎是代理请求到相同的主机。 但是这里的诀窍在我的/ etc / hosts文件中,我将把所有的域映射到它们的内部IP。

 182.168.0.110 example1.com 182.168.0.120 example2.com 182.168.0.130 foo.example2.com 182.168.0.140 bar.example2.com 

因此,反向代理服务器会将请求的主机路由到同一台主机,但此时查找本地主机文件,并将其映射到内部IP地址。 这也意味着我可以“设置和忘记”Nginxconfiguration文件。

潜在的问题是,如果本地主机名尚未configuration,则反向代理将把请求发送回互联网。 不过,我认为NAT会阻止它陷入无限循环。

这个解决scheme似乎在我的脑海里,在纸上,但我不能够设置一段时间。

任何人都可以看到为什么这不起作用的原因吗?

谢谢。