如何在单个 IP 地址后面托管多个 Web 服务器?

如何在单个 IP 地址后面托管多个 Web 服务器?

我有一台 IP 为 (xx.xx.xx.xxx) 的 VPS,使用 Linux 操作系统。我安装了“Gitlab”并在端口 80 上运行它,安装了“wiki.js”并在端口 82 上运行它,安装了“elasticsearch”并在端口 34000 上运行它。我尝试使用 IP 地址创建我的 DNS 的 3 个 A 记录 (gitlab.mydomain.com、wiki.mydomain.com、es.mydomain.com)。但所有记录都仅重定向到 gitlab.mydomain.com。

我可以理解它正在读取默认端口 80,因此它被重定向到 gitlab.mydomain.com

因此,我尝试在最后用端口号 (xx.xx.xx.xxx:82) 更新“指向”的 A 记录,但它不接受并要求输入有效的 IP 地址,因此我必须强制为所有 3 个 A 记录提供相同的 IP 地址。

我如何让 DNS 理解指向同一 IP 上的不同端口。我对这个托管服务还很陌生,如果我不应该使用 A 记录,我应该使用什么?任何帮助都非常感谢。

让我知道我不清楚。

答案1

简而言之,您不能仅通过 DNS 来做到这一点。

DNS技术上支持这一点,有两种 DNS 记录类型允许为给定的域名指定服务位置(主机:端口) - 但它们都对您的情况都无济于事。

  • 较旧的“SRV”记录类型通常用于其他应用程序,但它不是可以被任何 Web 浏览器或 HTTP 客户端识别。

  • 较新的“HTTPSSVC”记录类型仍处于草案阶段,只有非常新的浏览器才支持。顾名思义,它仅有的适用于 HTTPS – 不适用于基本的纯文本 HTTP。

您将需要一个 HTTP 级别的解决方案 -反向代理它接受端口 80(或 443)上的所有请求,然后根据收到的“虚拟主机”名称将它们转发到正确的内部服务器。

标准 Web 服务器(Apache httpd、Nginx)可用作反向代理。还有专用程序(HAproxy、Traefik)。它们都可处理 HTTPS。

也可以看看:

相关内容