如何将 Web 流量路由到单个 IP 地址上的多个虚拟 Web 服务器

如何将 Web 流量路由到单个 IP 地址上的多个虚拟 Web 服务器

我有一台 ESXi 5 服务器,连接到一个 IP 地址。在此服务器中,我创建了 2 个虚拟机:

  1. Windows 2008 IIS Web 服务器 ( a.site.com)
  2. CentOS Apache Web 服务器(b.site.com

我不确定如何根据主机头将流量路由到正确的虚拟机?

答案1

您需要在主机上(或将所有请求路由到的虚拟机之一上)放置反向代理,该代理将根据主机标头在内部将请求转发到各个虚拟机。两个虚拟机都必须能够从特定 IP 地址或端口上的主机访问。

至于反向代理 - 一个选项是 Apachemod_proxyNginx是一个轻量级的替代方案。根据这篇文章,nginx可以配置为基于主机值工作的反向代理。

(免责声明:我本人实际上并没有这样做。)

答案2

我已经使用 IBM HTTP Server (IHS) 完成了此操作,我认为它不是免费的,但我最喜欢的反向代理 GPL 版本是 Pound (www.apsis.ch/pound/)。请查看该页面上的“虚拟主机(一般)”部分。我相信这就是您要找的内容。下面是该页面配置的略微调整版本...

 ListenHTTP
            Address 1.2.3.4
            Port    80

            Service
                HeadRequire "Host: .*a.site.com*"

                BackEnd
                    Address 192.168.0.10
                    Port    80
                End
            End

            Service
                HeadRequire "Host: .*b.site.com.*"

                BackEnd
                    Address 192.168.0.10
                    Port    80
                End
            End
        End

相关内容