V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
drymonfidelia
V2EX  ›  程序员

现在是不是还有很多 CDN 只支持 CNAME 接入? Google 等网站还要带个 www.前缀是因为 CNAME 和 MX 记录冲突的原因?

  •  
  •   drymonfidelia · 6 天前 · 2124 次点击
    16 条回复    2024-12-16 00:58:15 +08:00
    mytsing520
        1
    mytsing520  
       6 天前
    强答一波。。。

    1.早期互联网里面 www 的含义是 world wide web ,或称为万维网,是判断业务类型的主要依据之一;和电子公告板( bbs )、FTP 服务( ftp )、远程接入( telnet )等业务区分

    2.CDN 使用 CNAME 是因为 CDN 更多为多节点分布式部署,考虑到用户所在位置而设置为智能解析,且 CDN 节点的调度方式和频率每家遵循各自的规则,不太可能让用户去直接修改解析,还不如由 CDN 厂商自己使用一个域名来管理
    ( CDN 这一点的真实原因在写下这篇答复时不清楚,期待有专业答复)

    3.SEO 方面的原因,主页用两个域名会导致搜索结果出现用户不希望的变动,通常会将主域名以 301 或 302 的形式重定向到 www ,既能方便邮箱的使用,也能使 SEO 的结果看起来更符合自身设想的结果

    4.CNAME 具有唯一性和排他性( CNAME 会和其他任何记录类型发生冲突,包括 CNAME 记录自身)

    5.在国内,除了上述原因之外,还有一个原因,就是 ICP 备案,通常检查 www 或主域名之一是否解析到备案 IP ,因此,大厂考虑到以上任何因素之后,通常的做法是,会备案多个 IP 地址,并抽取其中一个或多个配置为重定向业务,将主域名流量 301 或 302 到 www 上
    julyclyde
        2
    julyclyde  
       6 天前
    @mytsing520 @livid 处理一下强答的吧
    52txr
        3
    52txr  
       6 天前
    @julyclyde 强答一下也可以参考参考,为什么要处理?(还是论坛有什么梗我不知道而已)
    mytsing520
        4
    mytsing520  
       6 天前
    @julyclyde 是这个答复有问题吗?
    julyclyde
        5
    julyclyde  
       6 天前
    @52txr 答非所问,感觉是强行混积分
    jmk92
        6
    jmk92  
       6 天前
    @julyclyde 没有吧,算是回答了下第二条问题,只是看着像 chatGPT 的答复,我也试试让 chatGPT 回答第一个问题

    是的,目前仍有许多 CDN 服务提供商主要支持通过 CNAME 接入。以下是一些常见的情况:

    1. Cloudflare:Cloudflare 的免费版本通常需要通过修改 NS ( Name Server )记录来接入,但也可以通过 Cloudflare Partner 计划实现 CNAME 接入

    2. 阿里云:阿里云 CDN 支持通过 CNAME 记录来加速域名。用户需要在 DNS 服务商处配置 CNAME 记录以实现接入。

    1. 其他 CDN 服务商:许多其他 CDN 服务商也提供 CNAME 接入方式,用户可以在 DNS 管理面板中添加相应的 CNAME 记录来实现接入。

    如果你不想修改 NS 记录,可以选择支持 CNAME 接入的 CDN 服务商,或者使用一些中转域名的方法来实现 CNAME 接入。
    mytsing520
        7
    mytsing520  
       6 天前
    确保为手写的答复,并没有用到 ChatGPT
    julyclyde
        8
    julyclyde  
       6 天前
    人家的问题:是不是
    你的回答:有哪些
    mytsing520
        9
    mytsing520  
       6 天前
    好吧。按照字面含义,直接答复如下:
    1.CNAME 接入是主要场景,也有 NS 接入。
    2.记录冲突是原因之一。
    drymonfidelia
        10
    drymonfidelia  
    OP
       6 天前   ❤️ 1
    @Livid #6 粘贴 AI 回复
    Tianao
        11
    Tianao  
       6 天前   ❤️ 1
    「现在是不是还有很多 CDN 只支持 CNAME 接入?」
    不好说很多还是不很多,像 Cloudflare 免费版反倒是只支持纯 NS 接入。

    「 Google 等网站还要带个 www.前缀是因为 CNAME 和 MX 记录冲突的原因?」
    不是,如 #1 所述,www 代表万维网业务,正是因为之前的万维网等具体业务都会带 www 前缀而一般只有 mail exchange 业务会使用不带额外前缀的域名所以 DNS 在设计的时候就没考虑到 CNAME 记录和 MX 记录共存的需求,为了简化逻辑实现便直接禁止了 CNAME 记录和 MX 记录共存。

    现在大量的公司已经实现了在「 www 业务和 mail exchange 业务使用同一 FQDN 」的同时「 www 业务接入 CDN 」,Cloudflare 的实现叫做 CNAME flattening.
    https://developers.cloudflare.com/dns/additional-options/cname-flattening/

    因此现在是否使用 www 前缀已经变成了一个非常复杂的架构层面的技术考量( NS 的控制权和托管责任等)和产品/公司品牌层面的人因考量(普通人对域名的理解和传达性;是否为 mail exchange 业务使用不同的 FQDN 而为 www 业务让路),而不是单纯的「必须要」或「可以不」的问题。
    ETiV
        12
    ETiV  
       6 天前 via iPhone
    绝大多数都是 CNAME ,因为可以用 dns 来根据用户地理位置就近调度。我已知的只有 Google CDN 不是 CNAME ,因为它给的 IP 有 anycast 能力,也可以实现类似的调度机制。

    带前缀的问题得具体问题具体分析…
    ryd994
        13
    ryd994  
       6 天前 via Android
    CNAME 和 MX 记录冲突已经不是问题了。你用过 cloudflare 的话就会知道 CNAME flattening 功能。给裸域名设置 CNAME 时,cloudflare 会提取 CNAME 指向的 A 和 AAAA 记录,实现和 MX 记录共存。
    drymonfidelia
        14
    drymonfidelia  
    OP
       6 天前
    @Tianao 但是以前很多传统 CDN ,像早期国内的百度 CDN 是只支持 CNAME 接入
    Cloudflare 不付费只能 NS 接入反而算个例外
    另外可能还有早期 301 过的问题,我查了下 301 的缓存不会过期,估计很难改
    i0error
        15
    i0error  
       5 天前
    @julyclyde #5 虽然但是,回复是消耗铜币的。
    mytsing520
        16
    mytsing520  
       5 天前
    早期 CDN 有使用门槛,主要为企业使用,个人使用极少,通过 CNAME 方式配置可以极大减少企业管理成本并提高业务生效时间( NS 切换通常需要 24-72 小时全球生效)。

    当前 CNAME Flattening 在实际应用中,本质上依然是 A 或 AAAA 记录,并没有直接突破 CNAME 和其他业务类型并存而只是变相解决兼容性问题,如果原始 CNAME 本身有全球多地区多 IP 的特性,会对网站自身造成影响(如:www.gov.hk ,使用了 CDN 和 CNAME Flattening ,解析出来的结果就不是就近解析)。

    Google 的 IP 地址很早具备了 anycast 能力,但据我观察 2014 年之前 Google 自身并不是所有 IP 在全部地区都实现任播,所以也依靠 CNAME 的方式实现业务流量的就近智能解析和负载均衡。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2370 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:52 · PVG 23:52 · LAX 07:52 · JFK 10:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.