设置子域名以访问特定 IP 上的不同端口

设置子域名以访问特定 IP 上的不同端口

首先,我不确定这是否是发布此问题的正确网站,但它似乎是合适的,因为这是一个 DNS/服务器问题。

我在一台机器上运行着 3 种不同的 Web 服务,我认为,如果我和我的客户能够通过域名连接到这些服务,我的生活将会变得更加轻松。

我个人对服务器/域设置不是很有经验,但我想尝试一下。预期结果是这样的:

servicea.domain.com -> remoteIP:1000
serviceb.domain.com -> remoteIP:2000
servicec.domain.com -> removeIP:3000

我已经研究解决方案大约 2-3 个小时了,从我所看到的,我需要设置一个这样的 DNS SRV 记录:_service._tcp.servicea.domain.com以及一个指向 IP 地址的 DNS A 记录:servicea.domain.com -> remoteIP:1000

到目前为止,我在设置 SRV 记录时遇到了一些问题,我知道第一个值是服务的符号名称,但这是什么意思?据我在这个链接上看到符号名称列表没有找到我需要的匹配项。符号名称是否需要具体化,还是我可以自己命名?

到目前为止,我尝试过的是像这样设置 SRV 记录:_sysconsole._tcp.sys.domain.com并像这样设置 A 记录:sys.domain.com -> remoteIP:1000

我的做法是否正确,或者我还远远没有找到正确的解决方案?

如果我的问题中有很多拼写错误和语法缺陷,请耐心等待,因为英语不是我的母语。

答案1

一般来说,您无法使用 DNS 来更改客户端所连接的特定端口。也有例外,例如 SIP 或 XMPP,但 HTTP 不是使用 SRV 记录来协商使用哪个端口的服务。

相反,假设这是 HTTP 流量,您要做的就是使用反向代理(如 HermanB 所建议的)。

您需要为要公开的每项服务设置一个子域,所有子域都指向您的特定托管 IP。然后,您将拥有一个反向代理,例如 NGINX,监听端口 80(http)/443(https)。反向代理将查看用于访问 IP 的 DNS 名称,并相应地将流量转发到您的内部网络。

例如,如果 NGINX 看到针对 service1.example.com 的请求,它会将流量转发到 192.168.1.10:1000,但如果它看到针对 service2.example.com 的请求,它会将其转发到 192.168.1.10:2000。

答案2

对于 Web 服务,您通常在默认 http/https 端口上运行专用产品或 Web 服务器作为反向代理。

反向代理可以使用 http 请求中的主机标头将最终用户请求转发到运行非默认端口的正确后端。

例如参见https://serverfault.com/a/753155/546643

相关内容