在单个 IP 地址上运行多个可公开访问的 Web 服务器

Kir*_*met 3 ubuntu web-hosting web-server apache-2.2

我在一个只有一个公共 IP 地址的网络上有三个独立的 Web 服务器,其中包含三个不同的内部 IP 地址。每个 Web 服务器都有安全限制,因此我不能只在单个 Web 服务器上运行我的所有网站。所有人都在运行Apache。

我想设置子域,允许我远程访问每个不同的 Web 服务器,全部在端口 80 上。例如,

site1.domain.com

site2.domain.com

site3.domain.com

所有这三个域都解析为我的单个公共 IP 地址,但某种类型的服务会检查请求以查看请求的是哪个子域并从适当的服务器中提取数据。

这种类型的事情(1)可能并且(2)容易实现吗?我正在运行 Ubuntu Server 9.04。

rad*_*ius 5

这称为反向代理,您可以将端口 80 上的所有流量重定向到一个 Apache 服务器,配置 3 个vhost(每个子域 1 个),并在 2 个处理非本地网站的 vhost 中使用 Apache ProxyPass指令告诉 apache 从另一台服务器加载内容.

nginx也可以充当反向代理。您可以将所有请求转发到 nginx,然后 nginx 将根据子域将内容加载到正确的服务器上。

我会使用 Apache proxypass 功能,从我的角度来看它更容易设置。
您还可以启动仅用作反向代理的第四个 apache 服务器。在这种情况下,所有 3 个 vhost 都将使用 proxypass 从正确的服务器获取内容。

例如,请参见http://www.raskas.be/blog/2006/04/21/reverse-proxy-of-virtual-hosts-with-apache-2/,您的情况与您有第三个相同子域(因此您还需要 1 个虚拟主机)。