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

Bre*_*dan 2 ubuntu iptables subdomain static-ip

我正在寻找一种通过使用不同的子域来访问共享单个静态 ip 的多个服务器的方法。作为预警,我以前从未接触过网络配置,因此我对适当术语的了解有限。

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

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

编辑

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

Bel*_*dez 14

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

你可以做什么:设置一个反向代理作为你的网关,然后根据 HTTP 主机请求标头转发一个地址。我建议使用Pound,因为它是轻量级的,它的唯一目的是成为一个反向 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
Run Code Online (Sandbox Code Playgroud)

回复评论

如果要将反向代理保留在您拥有的当前服务器之一中,则必须:

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

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