我想在 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]:当然,除非使用高度特定的服务器,您可以在其中插入特定的后端,该后端会按照您需要的方式对标签采取行动。