将外部请求转发到虚拟机

将外部请求转发到虚拟机

我有一个在 Fedora 上安装并运行 Apache 的 Ubuntu Server 虚拟机。如何将外部 Web 请求转发到我的虚拟服务器?

因此我的主机(fedora)在 142.204.142.182 上运行,我的虚拟机(ubuntu)在 192.168.100.136 上运行

我怎样才能做到这一点,当有人在另一台计算机上(从他们的 Web 浏览器)请求 142.204.142.182 时,我的主机会将请求转发到虚拟机,因此页面由 VM 提供。

答案1

如果 Ubuntu VM 是 LAN 上唯一公开可用的 Web 服务器,那么您可以将防火墙/路由器上所有 TCP/80 的传入请求转发到 192.168.100.136。

当您需要更多内部主机作为公开可用的 Web 服务器时,就会出现问题。您需要获取更多公共 IP 地址,或设置 192.168.100.136 Web 服务器以将所有请求代理到不同的 Web 服务器,具体取决于传入请求的 Host 标头。

这称为反向代理,使用 Apache 很容易设置。缺点是 136 Web 服务器上的负载会增加,因为它代理所有流量。优点是它也可以用作缓存,从而减少其他 Web 服务器上的负载。说到这个……

另一个选项,类似于 Apache 反向代理,是安装负载平衡器,例如,并将传入的 TCP/80 流量转发到该负载均衡器。在负载均衡器中,您可以定义规则来定义哪些请求由哪些内部服务器处理。实际上这也是一个反向代理,但诸如 Varnish 之类的负载均衡器在缓存方法和配置方面更先进。

答案2

除非我完全误解了你的问题,否则只需确保托管站点的 DNS 指向虚拟机的 IP 地址,确保没有防火墙阻碍并且正确的路由到位。

如果这没有回答您的问题,请更详细地阐述。

答案3

VM 的 NIC 是否偶然设置为 NAT?如果是这样,是否有“硬性”要求将其设置为 NAT?如果没有,为什么不将 VM 的 NIC 设置为“桥接”模式并为其分配一个有效的(适用于您的网络的)142.204.xx 地址?

相关内容