使用子域配置多个服务器以共享一个静态 IP

使用子域配置多个服务器以共享一个静态 IP

我正在寻找一种通过使用不同的子域来访问共享单个静态 IP 的多个服务器的方法。事先声明,我以前从未接触过网络配置,因此我对相关术语的了解有限。

现在我有 3 台运行 ubuntu 11.10 的服务器,位于交换机后面。我想以 server1.example.com、server2.example.com 和 server3.example.com 的身份访问它们。当所有 3 台服务器都配置了相同的静态 IP 时,只有一台机器拥有互联网连接。因此,在我尝试配置 iptables 之前,我花了很多时间在 /etc/network/interfaces 中进行实验,这可能是一个大错误本指南

我不知道从哪里开始,甚至不知道该用 Google 搜索什么。也许我需要不同的硬件配置,目前每台机器都有一个网卡,不过如果需要的话我可以找到网卡。除了交换机,我还有一个旧的 wrt54g 路由器。

编辑

我主要希望通过 HTTP 访问它们,但 SSH 也很重要。

答案1

你是不是能够让所有 3 台机器共享一个 IP 地址。网络的工作原理并非如此。查看关于网络路由如何工作的答案以解释原因。

你可以做什么:设置反向代理作为网关,然后根据 HTTP 主机请求标头转发地址。我建议使用因为它是轻量级的,并且它的唯一用途是作为反向 HTTP 代理。不过,如果您更熟悉 apache 或 nginx,也可以使用它们来完成相同的任务。

一旦设置了反向代理,您就可以对服务器使用 NAT,并使用静态 IP 配置网关。

在 Pound 中如何执行此操作的示例(1.2.3.4是您的静态 IP,所有server#.example.com都是指向该静态 IP 的 A 记录):

ListenHTTP
        Address 1.2.3.4
        Port    80
        Service
            HeadRequire "Host: .*server1.example.com.*"

            BackEnd
                Address 192.168.3.11
                Port    80
            End
        End
        Service
            HeadRequire "Host: .*server2.example.com.*"

            BackEnd
                Address 192.168.3.12
                Port    80
            End
        End
        Service
            HeadRequire "Host: .*server3.example.com.*"

            BackEnd
                Address 192.168.3.13
                Port    80
            End
        End
 End

回复评论

如果您想在当前服务器之一中保留反向代理,则必须:

  1. 选择其中一个服务器作为反向代理。
  2. 让您的路由器将所有 HTTP 流量转发到该反向代理。
  3. 在 3 上配置您的 HTTP 服务器server#.example.com来监听备用端口——可能是 8080。
  4. 最后,配置您的反向代理,根据host标头将流量转发到端口 8080 上的 HTTP 服务。

在 HTTP 服务器上配置备用端口应该非常简单。唯一稍微困难的部分是配置反向代理,但你可以找到许多使用 pound、apache 或 nginx 完成此操作的示例。

答案2

通常,您无法通过名称进行设置,只能通过端口进行选择。我认为理论上可以让一个设备监听名称并根据该名称转发到系统,但我还没有听说过哪个设备/程序可以真正做到这一点。您可以让 Web 服务器根据名称做出不同的回答(因此我相信理论上是可行的)。

通常,您会进行端口转发。如果您希望 server1 成为您的发送邮件服务器,那么您将重定向端口 25(最有可能);如果 server2 是您的 Web 服务器,那么您将重定向端口 80 到 server2;如果 server3 是您的 SSL Web 服务器,那么您将重定向端口 443 到它。这样,一个 IP 就可以处理所有 3 个服务器……但一个 IP 只能处理一组作业 - 这些作业可以分摊到多个服务器。

相关内容