Apache 反向代理至多个虚拟机

Apache 反向代理至多个虚拟机

我到处寻找解决我的问题的方法但没找到。

设置:

所以我有一台运行 VirtualBox 的主机,上面有多个 Web 服务器。每个 VM(Web 服务器)都有 2 个网络适配器;Nat(具有 8080 到 80 的端口转发和 SSH)和仅主机适配器。每个仅主机适配器都有自己的网络适配器(因此每个虚拟机都应该有自己的外部 IP)。在主机上使用 apache 时,我在 sites-available 中有以下文件(每个服务器一个):

<VirtualHost *:80>
   ProxyPreserveHost On
   ProxyRequests Off
   ServerName www.domain1.com
   ServerAlias domain1.com
   ProxyPass / http://192.168.58.1:8080/
   ProxyPassReverse / http://192.168.58.1:8080/
</VirtualHost>

这个想法是,主机系统上的 apache 将根据域名将请求重定向到托管该站点的正确虚拟机(然后让该服务器上的 apache 执行其需要的操作。)

问题:

似乎我的所有域都指向同一个虚拟机。因此,无论我访问哪个域,都会转到完全相同的页面。所以我想知道我做错了什么以及如何使域指向正确的虚拟机?这是否与服务器上的主机名配置不正确有关?如果是主机名问题,我应该将主机名设置为什么/如何设置?

更新:

看来 apache 不是问题所在。看来所有主机专用 IP 都指向同一个虚拟机。因此,尽管我确保每个虚拟机都有自己的设置,但我肯定缺少虚拟机上主机专用适配器的一些配置。

解决了:

请参阅下面的答案。

答案1

我最终解决了这个问题,方法是只使用一个主机专用适配器,而不是多个适配器,然后只为每个虚拟机使用不同的端口。这样,每个虚拟机都有相同的外部 IP,只是端口不同。我还在每个虚拟机上设置了静态 IP,但我不太确定这是否有必要。完成此操作后,我只需更新主机上的每个 Apache 配置以获取新的 IP 和端口。

相关内容