我在只有一个公共 IP 地址的网络上拥有三台独立的 Web 服务器,它们具有三个不同的内部 IP 地址。每台 Web 服务器都有安全限制,因此我无法在一台 Web 服务器上运行所有网站。所有服务器都运行 Apache。
我想设置子域名,以便我能够远程访问每个不同的 Web 服务器,所有服务器都位于 80 端口上。例如,
网站1.域名.com
site2.domain.com
site3.domain.com
所有这三个域名都解析为我的单个公共 IP 地址,但某种类型的服务会检查请求以查看请求了哪个子域名并从适当的服务器中提取数据。
这种事情 (1) 可能吗?(2) 容易实现吗?我正在运行 Ubuntu Server 9.04。
答案1
这称为反向代理,您可以将端口 80 上的所有流量重定向到一个 Apache 服务器,配置 3虚拟主机(每个子域 1 个)并在 2 个 vhost 处理非本地网站时使用 Apache代理通行证指令告诉 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 个以上的虚拟主机)。