Domain-Name-System

設置子域以訪問特定 IP 上的不同埠

  • October 1, 2020

首先,我不確定這是否是發布此問題的正確網站,但它似乎合適,因為這是一個 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

我是在正確的軌道上,還是我離正確的解決方案不遠?

如果我的問題中有很多拼寫錯誤和語法缺陷,請多多包涵,因為英語不是我的母語。

一般來說,您不能使用 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 年。

引用自:https://serverfault.com/questions/1035991