如何在一个IP地址上拥有多个服务器

mon*_*ch8 6 apache-http-server webserver cloud subdomain raspberry-pi

我无法弄清楚如何在一个 IP 地址上拥有多个服务器(执行不同的操作)。我希望子域指向不同的应用程序。让我举一个我正在尝试做的例子。我只为这个例子选择了几个服务。我还使用了一些我为这个项目准备的树莓派。

假设我有一个在“mydomain.com”上运行我的网站的网络服务器。但我也想在“mc.mydomain.com”的不同服务器上运行具有相同 IP 地址的 Minecraft 服务器。然后我想在“cloud.mydomain.com”的不同服务器上运行ownCloud服务器

对于这个项目,我使用的是树莓派,并且我的域名是在 Namecheap 注册的。

Pat*_* R. 9

我认为这是一个小型办公室/家庭设置。

无法将相同的 IP 分配给多个设备。因此,您要么必须在同一设备上托管所有内容,要么使用一种机制来帮助您将数据包分发到相应的服务器。我认为您需要在这里研究的是端口NAT反向代理

如果您只有一个可用的 IP 地址,则必须

  • 将公共 IP 配置到单个设备并在本地网络内分发请求
  • 在同一硬件(例如您的树莓派)上托管所有服务。

端口转发示例:

  • 您配置cloud.mydomain.com为指向您的 IP。在这里,您将在端口 443 (https) 上运行 Web 服务器。
  • 您配置mc.mydomain.com为指向您的 IP。在这里,您将在您选择的端口上运行您的 Minecraft 服务器,例如 25565。
  • 您将防火墙/路由器配置为转发它在其公共 IP 上收到的所有内容。
    • ...在端口 443 上连接到托管 ownCloud 实例的树莓派。
    • ...在端口 25565 上连接到托管 Minecraft 服务器的树莓派。
  • 这些可以是本地网络上的不同设备。您只需设置端口转发或 NAT 规则。

使用代理的示例:

  • 您想运行多个只有一个 IP 的 Web 服务器。您不想为不同的网站使用不同的端口。
  • 您将子域配置为指向您的单个 IP。
  • 您设置了一个端口转发/NAT 规则,将端口 443 上的任何传入流量转发到您的树莓之一。
  • 您在另外两个树莓派上设置了 Web 服务器,每个树莓派都应处理其中一个子域的流量。
  • 在第一个树莓派上,您设置了一个反向代理,例如使用Nginx。您为子域设置了不同的配置:一种用于sub1.mydomain.com,一种用于sub2.mydomain.comproxy_pass指令指向本地网络中的其他 Web 服务器。
  • 您的 Nginx 代理现在处理任何传入流量,根据用户请求的子域将其分发到正确的 Web 服务器。