将HTTP请求转发到虚拟networking后面的虚拟机

我试图build立一个虚拟机主机(当前运行的ubuntu + KVM),它将为不同的应用程序托pipe许多虚拟机。 例如,我们有一个虚拟机运行在一个虚拟机上,另一个虚拟机运行在另一个虚拟机上。

     主办
      / \ 
     VM1 VM2

在内部,虚拟机在自己的虚拟networking上有自己的IP,但是从外部来看,只有一个IP地址是主机的IP地址。

在我们的networking上build立了一个指向主机IP的域,我可以设置一个iprule来将发往主机的stream量直接转发给其中一个虚拟机。 但是,为了使这两个虚拟机访问外部世界,不知何故,我需要转发基于URL的请求。

理想情况下,我想通过子域转发请求

 http://vm1.host/  - > host  - > VM1
 http://vm2.host/  - > host  - > VM2

但也可以通过URLpath:

 http:// host / vm1  - > host  - > VM1
 http:// host / vm2  - > host  - > VM2

我已经在主机上安装了Apache 。 我需要什么types的转发/redirect/别名/反向代理规则才能使这种networking设置正常工作? 有什么额外的需要处理子域名?

你是否从主机本身提供任何网页? 如果不是,所有的Web数据都在VM1和VM2上,那么主机上的Apache可能不是最好的解决scheme。 很可能你应该在主机上使用诸如haproxy或squid之类的东西来将请求转发到运行在VM1和2上的Apache

我有一些类似的环境,我需要从一个主机转发到另一个东西,所以我使用Apache的mod_proxy http://httpd.apache.org/docs/2.2/mod/mod_proxy.html我希望有所帮助,你也可以利用虚拟主机http://httpd.apache.org/docs/2.2/vhosts/

我认为在主机上使用Apache很好。 这和这个serverfault post基本一样,你需要某种反向代理。