我运行两个虚拟 Web 服务器(均在 Debian 上运行 apache2)。我只有一个外部 IP,但有两个域,并且我希望每个服务器都有一个域。
我知道我需要一个反向代理,并且我在“主服务器”上启用了 mod_proxy 和 mod_proxy_http 模块。我需要在“辅助服务器”上启用任何功能吗?
我也知道我需要在虚拟主机文件中写一些东西,但是写什么呢?在主服务器上,我有一个用于其中一个域的虚拟主机文件,还有一些用于子域的虚拟主机文件。我希望 domain1.tld 转到主服务器(端口 80 转发到它,这样就可以了),而 domain2.tld 转到另一台服务器(内部 IP 192.168.0.x)。不需要将端口转发到它,对吧?那么,要添加什么以及在哪个虚拟主机文件中?还是添加一个新的?其他问题建议添加 ProxyPass 和 ProxyPassReverse,但我还是迷茫了,我只是不明白 apache 文档。
提前致谢
答案1
你可能想看看使用HAProxy,它可以很好地完成这类事情。
简而言之,您将创建第三个 VM,它运行 HAProxy 并具有您的 IP 地址。您的 HAProxy 配置将决定在后端将请求发送到哪个 Apache 实例。
看一下该网站,如果您想尝试一下,那么您可以提出更多问题。
答案2
单个 Apache 实例(例如一台物理机器)上有两个域,且只有一个 IP 地址,这种方式非常简单,称为Name Based Virtual Hosts
。
Apache 手册对此进行了很好的介绍,甚至您应该能够从这个页面中理解一些内容:http://httpd.apache.org/docs/2.0/vhosts/name-based.html。
我对你试图用 mod-proxy 做的事情有点困惑。这似乎太复杂了,而且没有真正的理由。希望这能有所帮助。
答案3
听起来很像这,虽然我还没有这样做过,但我不确定
答案4
您可以在一台服务器上运行多个服务器和一个域。
由于 Vhost 配置文件设置了域名和服务器名称,因此 Alias 或 Vhost 将在一台主服务器上接受不同的域名,因此一台服务器可以在一台服务器和 IP 上运行两个域名。优点:一台服务器运行多个域名限制资源(仅使用一台服务器为网站提供服务)
缺点:
如果您已经拥有来自主要域名的大量服务器使用量,那么添加更多服务器将无济于事。
其他解决方案:您需要一个负载平衡器,它位于服务器路由的前面,将域转发到防火墙后面的每个 IP,或者不是将单个 IP 地址转发到本地 IP。
这是我写的一篇关于设置不同域名托管的文章 http://www.gtwcmt.co.uk/virtual-host-creation-in-apache-windows/