我如何设置两个虚拟的Ubuntu Web服务器,并根据传入的域来拆分它们之间的networkingstream量?

我有一个机架式服务器(HOSTA,运行Ubuntu 12.04),有两个虚拟化安装的Ubuntu(VIRTA&VIRTB,通过vboxheadless,一个是12.04,另一个是14.04)。 一个有最新版本的apache / mysql / php,一个旧版本的web应用程序。 所有这三个安装的Ubuntu都有自己的本地IP地址。 我有一个目前映射到example1.ddns.me的外部IP地址(通过no-ip)。 目前,networkingstream量然后通过我的verizon路由器转发到VIRTA。 现在,我需要让这个老式的服务器运行起来,让世界各地都能看到,而且我不允许使用80以外的其他端口,否则我会把8080端口路由到VIRTB上。

我希望所有传入的networkingstream量去HOSTA和设置反向代理(我认为?)将example1.ddns.me分割为VIRTA和example2.ddns.me分割到VIRTB。 这是如何反向代理工作? 任何人都可以提供演练吗?

您可以使用HAproxy根据使用ACL的主机名向不同的后端发送请求:

https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#acl

例:

acl is_host1 hdr(host) -i host1.example.com acl is_host2 hdr(host) -i host2.example.com use backend host1_backend if is_host1 use backend host2_backend if is_host2 

这只是一个片段,不是一个完整的工作configuration,但它应该让你在正确的轨道上。

好吧,这是我最终select的解决scheme,这很好。 为了彻底的回答,我会简要回顾一下。

服务器:

ServerA – Ubuntu的12.04 – 192.168.1.230的内部静态IP

ServerB – Ubuntu的14.04 – 内部静态IP为192.168.1.235

我有一个网站在每个服务器上,12.04(与一个较旧的PHP安装),我希望exampleA.com指向,我的新网站在14.04与新的PHP与exampleB.com。 两台服务器都在运行Apache2。

我有一个外部IP地址,这两个域和所有子域指向。 我的路由器上的端口转发将端口80上的所有传入stream量传递给ServerA。

通常情况下,所有的网页文件都将在/ var / www /中,这个文件是由/ etc / apache2 / sites-available / default中的apache2configuration日志设置的(在ubuntu14.04上这个文件是/ etc / apache2 / sites-available / 000-默认值)。

我离开了默认的VirtualHost模块,让原来的网站保持正常运行,没有改变,如下所示:

 <VirtualHost *:80> DocumentRoot /var/www </VirtualHost> 

该块可能有其他的configuration,比如网站pipe理员的电子邮件和.htaccess的每个目录的configuration等,但基本的是,从端口80进来的任何东西都指向你的/ var / www文件夹,并从那里。

在VirtualHost块下面,我添加了一个新的VirtualHost块,如下所示:

 <VirtualHost *:80> ServerName exampleb.com ProxyPreserveHost on ProxyPass / http://192.168.1.235 ProxyPassReverse / http://192.168.1.235 </VirtualHost> 

这允许来自exampleb.com的端口80(至192.168.1.230地址)的任何stream量被转发到192.168.1.235,并由于该代理部分而从该机器上的apache服务。 发生什么是基于该机器的Apacheconfiguration。

这个设置将需要在apache2中启用代理,这可以通过ubuntu中的这个命令完成:

 a2enmod proxy 

事实certificate,这是一个非常简单的安排,完全符合我的意图。 对不起,如果这个解释不是很清楚,欢迎反馈意见来改进或澄清。

看看这个Apache文档: mod_proxy

你可能会发现有用的第一个主题“前向代理和反向代理/网关”,它的例子(也许你需要挖掘一些更多的例子,以使其工作)

有时候,你将不得不添加一些重写规则的url,但会做的伎俩

无论如何,我会按照Jim G.在评论中提出的build议。