如何在单个IP地址后面托管多个物理Web服务器?


14

我在家里运行多个Web服务器,每个Web服务器均插入路由器。

服务器A服务器B服务器C

由于我的IP(xx.xxx.xx.xx)端口80指向服务器A,因此我目前只能使用一台服务器。但是,某些域指向服务器A,某些域指向B,依此类推。

使用我的一个IP地址,如何指向每台服务器?例如,我的A(主机)记录所有指向我的IP地址的点。

对不起,如果我感到困惑。让我知道是否不清楚。

每个服务器都在运行Ubuntu Server 12.04.02并使用Apache(如果有帮助)。我的路由器也是Netgear,我的ISP是时代华纳电缆。



@kobaltz并非完全正确,因为它们是不同的服务器,而不是虚拟主机。这些是3台物理服务器
Stephen Cioffi

在问题中,我的回答仍然是相同的,您将拥有一个反向代理服务器,这将是路由器之后的第一个服务器。从那里,它将把数据推送到三个服务器之一。如果您使用OpenWRT之类的软件,甚至可以在路由器内部执行此操作。
kobaltz 2013年

我目前在其他问题的答案中使用的是解释。我有一台虚拟机服务器,该服务器具有用于网关的VM,然后有20个节点。根据子域和域名,它将数据推送到20台服务器之一。
kobaltz 2013年

Answers:


9

网站将通过Host:浏览器发送的标头进行识别。但是,由于您的路由器无法进行虚拟主机使用的HTTP拆分,因此您将需要选择一台服务器作为“端点”(并告知您的路由器该地址为“虚拟服务器/ DMZ”)。

然后,您可以将一台机器配置为其域的Web服务器,并为其他域代理(例如,使用Apache反向代理),或者(可能更好)在该一台计算机上安装代理,并使用该代理将请求复用到其他服务器。某些域甚至可能托管在同一台计算机上。nginx适用于这种工作,但是您也可以使用其他软件(例如pound)。

我认为第二种解决方案更好,因为您根本不需要摆弄Web服务器的配置:一个代理进行代理,而多个Web服务器进行Web服务。如果您需要添加服务器或移动虚拟主机,则此架构更易于维护。

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

由于请求被解码两次(由代理一次,由其预期的接收者一次)而导致的增加的延迟可以忽略不计,并且远远超过了代理自身提供的加速所抵消的时间。


如果我创建一个VM guest虚拟机作为代理,那么最好使用什么操作系统以及应该分配哪些硬件资源?您提到在DMZ上设置此代理...这是否必要?我不能只转发我想打开的端口,以便通过路由器的防火墙和NAT仍然有一些保护层吗?
Reece

代理的资源不是问题,它将严重依赖网络。至于操作系统,我可以肯定地说一个Unix,Linux或BSD,这取决于您最熟悉的东西。也有用于几种虚拟化解决方案(vmware,virtualbox,xen等)的现成设备。是的,您绝对可以只转发所需的那些端口。
LSerni '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.