我想在 IIS 10 和 GoDaddy DNS 伺服器上實現此行為。
我有三台伺服器處理三個應用程序,前兩個工作正常,但第三個遇到問題:
- 所有
www.example.com
流量都non-www.example.com
流向一台伺服器。 - 一切都
api.example.com
歸於另一人。 - 全部
s*.example.com
傳送到第三個伺服器(僅以字母 開頭的子網域S
)
考慮到明天我可能會有api2.mydomain.com
等等。
謝謝!
答案1
DNS 通配符是二進制的:它要么是一切,要么什麼都不是,你不能只匹配標籤的某些部分,比如你的s*.example.com
.這是協議的一部分,因此無論您使用什麼軟體,它都不起作用[1]
看RFC4592及其第 2.1.1 節:
「通配符網域」是透過其初始(即最左邊或最不重要)標籤來定義的,二進位格式為:
0000 0001 0010 1010 (binary) = 0x01 0x2a (hexadecimal)
第一個八位元組是 1 個八位元組長標籤的正常標籤類型和長度,第二個八位元組是「*」字元的 ASCII 表示形式 [RFC 20]。
因此,如果您想做類似的事情,您需要設定一個通配符,然後在網頁伺服器中的應用程式層級處理所有請求。
請記住,通配符雖然看起來很有吸引力,但可能會產生複雜的問題,對於 CNAME 記錄更是如此。區域文件通常是文字文件,因此很容易自動建立它們並在其中放入任意數量的記錄,而不是使用通配符。
[1]:當然,使用高度特定的伺服器除外,您可以在其中插入特定的後端,該後端將按照您需要的方式對標籤進行操作。