如何使用 Nginx 将 DNS 条目映射到端口

如何使用 Nginx 将 DNS 条目映射到端口

我有一台 Ubuntu 机器,上面有三个服务都在不同的端口上运行。

  • GitLab 在端口上运行80
  • EtherPad 在端口上运行9001
  • GemInABox 在端口上运行9292

有三个 DNS 名称指向这一台 Ubuntu 服务器,gitlab.domain.cometherpad.domain.comgeminabox.domain.com

GitLab 服务与 Nginx 配合良好,这里无需进行任何更改。但是,我不确定如何配置 Nginx 以允许对 的请求etherpad.domain.com传递到etherpad.domain.com:9091,以及对 的请求geminabox.domain.com传递到geminabox.domain.com:9292

这可能吗?

答案1

我认为您可以将现有的 nginx 用于 GitLab,并按照 @moebius_eye 的建议,将其配置为 Etherpad 和 GemInABox 的反向代理。此外,为了整合您想要通过 DNS 实现的功能,您可以使用 nginx 中所谓的服务器块(类似于 apache 上的虚拟主机的概念)。

您必须修改 nginx 配置文件以包含以下内容:

server{
    server_name etherpad.domain.com;

    location / {
        proxy_pass http://localhost:9091/;
        proxy_set_header Host $host;
    }
}

server{
    server_name geminabox.domain.com;

    location / {
        proxy_pass http://localhost:9292/;
        proxy_set_header Host $host;
    }
}

您可以查阅有关 nginx 代理模块和服务器块的文档,以使配置符合您的需要,但我认为以上内容是您所需的最低限度。

最后,我认为没有直接的 DNS 方法来完成您的要求。

答案2

您正在寻找的是 nginx 反向代理功能。

阅读文档。

答案3

只要特定的服务器应用程序/协议不支持它(以SRV记录的形式,维基链接),DNS不能用于此目的。

相关内容