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

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

我正在尝试设置一个虚拟机主机(当前运行 ubuntu + KVM),它将托管多个用于不同应用程序的 VM。例如,我们在一台 VM 上运行 wiki,在另一台 VM 上运行 Web 应用程序。

     主持人
     / \
    虚拟机1 虚拟机2

在内部,虚拟机位于自己的虚拟网络中,具有自己的 IP,但在外部,只有一个 IP 地址,即主机的 IP 地址。

我们的网络上设置了一个指向主机 IP 的域,我可以设置一个 iprule,将发往主机的流量直接转发到其中一个虚拟机。但是,为了让两个虚拟机都可以被外界访问,我需要以某种方式根据 URL 转发请求。

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

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

也可以通过 URL 路径:

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

我已经安装了阿帕奇在主机上。我需要什么样的转发/重定向/别名/反向代理规则才能使这种网络设置正常工作?处理子域是否需要其他东西?

答案1

您是否从主机本身提供任何网页?如果没有,并且所有 Web 数据都在 VM1 和 VM2 上,那么主机上的 Apache 可能不是最佳解决方案。您很可能应该使用类似哈普罗西或者乌贼在主机上将请求转发到在 VM1&2 上运行的 Apache

答案2

我有一个类似的环境,我需要将内容从一个主机转发到另一个主机,因此我使用 Apache 的 mod_proxyhttp://httpd.apache.org/docs/2.2/mod/mod_proxy.html我希望这有帮助,你也可以使用虚拟主机http://httpd.apache.org/docs/2.2/vhosts/

答案3

我认为在主机上使用 Apache 是可以的。这基本上与此 serverfault 帖子,您需要某种反向代理。

相关内容