我有一台 Ubuntu 机器,上面有三个服务都在不同的端口上运行。
- GitLab 在端口上运行
80
- EtherPad 在端口上运行
9001
- GemInABox 在端口上运行
9292
。
有三个 DNS 名称指向这一台 Ubuntu 服务器,gitlab.domain.com
、etherpad.domain.com
和geminabox.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不能用于此目的。