【问题标题】:What DNS type should I use to make my REST services available through my domain?我应该使用哪种 DNS 类型来使我的 REST 服务在我的域中可用?
【发布时间】:2016-04-18 15:04:31
【问题描述】:

我在 ip+port 地址上有一些可用的 REST 服务。现在我想配置一个 DNS 条目以使其可通过我的域使用。我已经尝试过屏蔽重定向,但是一旦我这样做了,我就无法使用重定向地址访问 REST 服务。我应该使用哪种类型的 DNS 条目?

【问题讨论】:

    标签: rest http dns


    【解决方案1】:

    DNS 只在 IP 地址级别起作用,它唯一关心的是将域名映射到 IP 地址,无法指定端口号。

    如果您的服务器位于 12.34.56.78,您可以使用 A 记录指向它。无法在 DNS 中指定端口。

    编辑添加

    虽然 RFC 2782 A DNS RR for specifying the location of services (DNS SRV) 确实提供了一种使用 Srv 记录来指定端口号的方法,但它最终被允许过期并且从未更新。

    具体来说,该提案被拒绝了,因为它可能会破坏 HTTP 层中的太多东西。

    message 已发布到 IETF 留言板上解释该决定。

    我是在提议它,但在邮件列表中经过长时间讨论后,我已经 了解在 WS 客户端中强制使用 DNS SRV 会破坏太多 HTTP 世界中的假设(通常只在 HTTP 层之上) 而不是下面)。

    HTTP 代理的存在也是一个很大的障碍,因为那些 应升级/修改代理以执行 DNS SRV 在 HTTP 请求是 WebSocket 握手的情况下只是。 最后一个论点足以不强制要求解决 SRV。

    (复制自另一个answer

    【讨论】:

    • 这实际上是不正确的。看另一个答案。 SRV 记录当然使用端口。是否实用或有用是另一回事。
    • @Evert 我已经修改了答案
    • @MichaelB-AzureMVP 过期的不是 RFC 2782,而是将 SRV 记录引入 HTTP 的提议(实际上是两个)。由于您引用的消息中提到的问题,这些努力已停止。不过,SRV 记录本身非常活跃。例如。 SIP 和 Jabber/XMPP 服务正在使用它们。
    • @DaSourcerer 我意识到 SRV 记录非常活跃,但是这个问题专门针对 REST(即 HTTP)请求,因此出于这个问题的目的,SRV 记录已被打折。
    • @MichaelB-AzureMVP 对此没有异议。但是您的回答似乎暗示 SRV 记录本身的 RFC 已过期;不是特定于 HTTP 的提案。您似乎也认为我提倡使用上述记录来解决手头的问题。这不是真的:我想证明 (a) 确实有一种方法可以通过 DNS 为给定服务指定端口,(b) 这种方式不适合 HTTP,应该避免,最终 (c) (恕我直言,正确)方法是在请求 URL 中显式设置端口。
    【解决方案2】:

    实际上有一种称为DNS Service Discovery 的机制最初在RFC 2052 中指定(已被RFC 2782 废弃)。这允许通过特殊的SRV(类型 33)DNS 条目自动发现服务,指定命名服务的端口和权重(即首选项)。有 some considerations 将其扩展到 HTTP URI,但最终允许各自的草稿在达到 RFC 状态之前过期。后一个的section 2 中提到了一些原因。

    虽然SRV 记录在other protocols 中看到活跃使用,但对此的HTTP 客户端支持是quite rare。因此,如果您想通过专用的非标准端口提供服务,最好的办法是在RFC 3986, section 3 中指定的 URL 中指定它。

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 2017-06-10
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多