首先,我不确定这是否是发布此问题的正确网站,但它似乎合适,因为这是一个 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
我是在正确的轨道上,还是我离正确的解决方案不远?
如果我的问题中有很多拼写错误和语法缺陷,请多多包涵,因为英语不是我的母语。
对于 Web 服务,您通常在默认 http/https 端口上运行专用产品或 Web 服务器作为反向代理。
反向代理可以使用 http 请求中的主机标头将您的最终用户请求转发到运行非默认端口的正确后端。
参见例如https://serverfault.com/a/753155/546643
一般来说,您不能使用 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 年。