通过dns根据协议向不同的服务器发送不同的请求

Sending different requests to different servers based on protocal via dns

是否可以在不使用代理服务器的情况下根据请求的协议将dns路由到不同的服务器?

例如 wss://example.com 转到 1 个服务器,https://example.com 转到另一个服务器。

原则上不行,这是不可能的。虽然也有例外。

当您申请并请求网络地址时,例如example.com 应用程序将(通常)将请求传递给 OS 以打开到该地址的连接。

因为OS只能连接到一个IP地址,它做的第一件事就是发出一个DNS请求来找出它可以连接到的地址。根本没有机制告诉 DNS 请求请求的是什么协议。在 OS 发出 DNS 请求时,'What is the address for example.com' 消息正文中没有 space 以获取更多信息。

从这个意义上说,这是不可能的。

然而,有一些服务使用 SRV 记录来查找他们需要连接的服务器。

在这些情况下,应用程序会告诉 OS 'get me the SRV record for _somefancyservice.example.com' 当它有该记录时,它会向 OS 发送另一个请求以打开一个连接,无论它是什么在 SRV 记录中找到。

因此,理论上,您可以编写一个应用程序,首先执行 SRV 记录查询,然后打开与返回的任何内容的连接。

我写了一篇更专门关于wss的文章,你可能会觉得有趣。