是否有任何支持 HTTPS 的 DNS 系统或服务?

Jim*_*Jim 6 domain-name-system https load-balancing

基本上,我需要 DNS 以不同的 CNAMES 响应,具体取决于请求是针对 HTTPS 还是 HTTP 对象发出的。

s.test.com -> IF(https) RESPONSE special.domain.com ELSE simple.domain.com
Run Code Online (Sandbox Code Playgroud)

是否可以?还有什么其他可能的方法来做到这一点?

Hen*_*nes 43

不。

DNS 不知道 HTTP 或 HTTPS。

将其与向秘书询问某人的电话号码(IP 号码)进行比较。无论您想询问另一端的人什么,您都会得到相同的答复。


Lad*_*ada 26

这在 DNS 中是不可能的。DNS 请求完全独立于请求的原因

为此,必须废弃整个 DNS 缓存系统。每次发明新方案时,也必须重写 DNS。

你想做什么?可能有更好的方法来解决您的实际问题。

  • 因此,假设小型网络不足以容纳您的流量并且 SSL 是必需的,我可以看到的两种解决方案是:1. 为您的 SSL 流量使用不同的域或子域,或 2. 寻找第三个 CDN 提供商足够大*并且*支持自定义域的SSL。[Google AppEngine 是否适合您的需求](https://developers.google.com/appengine/docs/ssl)? (4认同)
  • 为什么你想要一个服务 HTTPS 而另一个服务 HTTP?我们的目标是解决此问题的*根本原因*,因为这是最好的解决方案。 (2认同)

小智 11

正如每个人都提到的,你不能用 DNS 做到这一点。我认为这通常是通过 URL 重定向来完成的。例如,如果您使用 Apache 作为您的 Web 服务器,您可以使用 mod_rewrite 设置重定向规则。然后你可以编写如下规则:

# If HTTPS redirect to special.domain.com
RewriteCond %{HTTPS} =on
RewriteRule .* https://special.domain.com%{REQUEST_URI} [R,L]

# If not HTTPS redirct to simple.domain.com
RewriteCond %{HTTPS} !=on
RewriteRule .* http://simple.domain.com%{REQUEST_URI} [R,L]
Run Code Online (Sandbox Code Playgroud)

以下是更多示例:http : //www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html


小智 7

我会给你怀疑的好处,并假设:

  • 您熟悉OSI 模型以及 DNS、HTTPS 和 HTTP 都是应用程序级协议这一事实。
  • 您了解协议必须是独立的(跨层和层内)才能有用。

因此,我认为您的问题意味着您想知道在 DNS支持资源记录类型中,DNS 中是否存在 HTTP/HTTPS 模拟到 MX(邮件交换)资源记录 (RR) 。

这似乎是RFC 2782 中描述的SRV(服务)记录类型的用途。尽管 LDAP、SIP 和 XMPP 服务似乎更常通过 DNS 以这种方式进行广告。

其原因似乎是历史性的:SRV 记录仅在 HTTP 被提出、开发和部署之后才被提出、实施和部署。有关为什么此时使用 SRV 记录来通告 HTTP/HTTPS 可能不是一个好主意的一些讨论,请参阅此问题。


use*_*517 5

不,DNS 不知道(或关心)哪个协议正在请求查找。