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

hoo*_*tor -1 ubuntu nginx

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

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

有三个 DNS 名称指向这台 Ubuntu 服务器gitlab.domain.cometherpad.domain.com、 和geminabox.domain.com

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

这可能吗?

小智 6

我认为您可以将您拥有的 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以查找有关 nginx 代理模块和服务器块的文档以适应您的需求,但我认为以上是您需要的最低限度。

最后,我认为没有直接的 DNS 方法可以满足您的要求。