我在一个只有一个公共 IP 地址的网络上拥有三个具有三个不同内部 IP 地址的独立 Web 服务器。每个 Web 服务器都有安全限制,因此我不能只在单个 Web 服务器上运行我的所有网站。所有人都在运行 Apache。
我想设置允许我远程访问每个不同 Web 服务器的子域,所有这些都在端口 80 上。例如,
site1.domain.com
site2.domain.com
site3.domain.com
这三个域都解析为我的单个公共 IP 地址,但是某种类型的服务会检查请求以查看正在请求哪个子域并从相应的服务器中提取数据。
这种事情(1)是否可能并且(2)易于实施?我正在运行 Ubuntu Server 9.04。
这称为反向代理,您可以将端口 80 上的所有流量重定向到一个 Apache 服务器,配置 3 个虚拟主机(每个子域 1 个)并在处理非本地网站的 2 个虚拟主机中使用 Apache ProxyPass指令告诉 apache 从另一台服务器加载内容.
nginx也可以充当反向代理。您可以将所有请求转发到 nginx,然后 nginx 将根据子域将内容加载到正确的服务器上。
我会使用 Apache proxypass 功能,从我的角度来看它更容易设置。
您还可以启动仅充当反向代理的第 4 个 apache 服务器。在这种情况下,所有 3 个 vhost 都将使用 proxypass 从正确的服务器获取内容。
有关示例,请参见http://www.raskas.be/blog/2006/04/21/reverse-proxy-of-virtual-hosts-with-apache-2/ ,您的情况与您拥有第三个的情况相同子域(因此您还需要 1 个虚拟主机)。