V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BraveXaiver
V2EX  ›  问与答

请问只有域名,没有云服务器(即不配置 IP)的话,加一条 CNAME 让其指向 github pages 会出问题吗?

  •  
  •   BraveXaiver · 2023-01-24 17:01:10 +08:00 · 1511 次点击
    这是一个创建于 667 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。我的域名是在 NameSilo 上买的,云服务器暂时懒得买,反正用 github pages 放下博客就够用了。

    另外我不太理解为什么 NameSilo 自动帮我创建了如下的 DNS record:

    其中怎么会有三条 A 类型的记录啊?一个域名不应该是和一个 IP 唯一对应的么?负载均衡也不是在这一层是在我自己的云服务器上做反向代理吧?

    而且这个 parking.namesilo.com 又是啥,是 namesilo 看我没配域名对应的 IP ,可怜我先帮我配上它们自己的网站?可是 blog CNAME 那个我已经设置成了我的 github pages 的网址了,为啥它这里还是现实这个东西呢。。

    搞不懂,头大。

    谢谢解答。

    15 条回复    2023-01-25 15:46:18 +08:00
    BraveXaiver
        1
    BraveXaiver  
    OP
       2023-01-24 17:03:29 +08:00
    另外就是我在 cloudflare 上办理了免费的 SSL 证书,但没有 A 类型的记录,只有这个 CNAME 的。之后如果想要加,就重新申请一个呗?

    然后 cloudflare 让我把它们的 DNS 解析服务器 id 替换掉 namesilo 的 DNS 解析服务器 id ,我替换之后,进入 namesilo 这边的 DNS recoreds 就会报警:由于你配置的首要 DNS 解析服务器 id 不是我们自己的,你在此处的更改很可能无效。

    额,要不然我把 https 的给改回来?
    Ranying
        2
    Ranying  
       2023-01-24 17:12:18 +08:00   ❤️ 1
    在 namesilo 里把 nameserver 换成 cloudflare 的之后,只需要到 cloudflare 的 DNS 记录中添加一条 blog 的 CNAME 记录指向你的 GitHub Pages 地址,然后开启 Proxy 模式即可。然后在 GitHub 仓库根目录提交一个名为 CNAME 的文件,内容是你的域名。

    不需要在 cloudflare 上办理免费的 SSL 证书,这个证书只用于在 Full(strict) 模式下 cloudflare 服务器连接你的服务器时使用。
    docx
        3
    docx  
       2023-01-24 18:01:30 +08:00 via iPhone
    > 怎么会有三条 A 类型的记录啊?一个域名不应该是和一个 IP 唯一对应的么

    A 记录可以有多个
    BraveXaiver
        4
    BraveXaiver  
    OP
       2023-01-24 18:33:44 +08:00
    @docx 可是有多个的话它怎么工作呢?是按照先后顺序有权重,第一个不 down 就永远只访问第一个?
    @Ranying 谢谢,在 namesilo 里把 nameserver 换成 cloudflare 是因为办 SSL 证书时 cf 要求的。我加了如下图的配置

    ![]( https://raw.githubusercontent.com/XSun771/ImgBed/master/uTools1674555675235.png)

    不过在仓库里放一个 CNAME 文件,额,可是我 github pages 仓库是 hexo 将生成的产品自动推送上去的,所以有,下次有新博文了也会由于产品推送被删掉。。这个文件要一直保留着吗
    mschultz
        5
    mschultz  
       2023-01-24 19:13:41 +08:00   ❤️ 1
    @BraveXaiver #4 有多个 A 记录或者 AAAA 记录的情况:如果你的浏览器(或者你使用 dig 等 DNS 工具)去查询这个域名, [一般情况] DNS 服务器会返回所有 A/AAAA 记录,顺序随机。浏览器一般可能选择第一个 IP 使用。

    上面说的应该是常见情况,DNS 服务器和浏览器的行为都取决于具体实现情况。例如,DNS 服务器根据访问者的 IP 返回不同的 IP ;浏览器尝试第一个 IP 失败后继续尝试其他 IP 等。
    mschultz
        6
    mschultz  
       2023-01-24 19:17:01 +08:00   ❤️ 1
    @BraveXaiver #4 至于保留 CNAME 文件的问题,可以参考 https://github.com/hexojs/hexo-deployer-git/issues/87
    mschultz
        7
    mschultz  
       2023-01-24 19:23:13 +08:00
    「而且这个 parking.namesilo.com 又是啥,是 namesilo 看我没配域名对应的 IP ,可怜我先帮我配上它们自己的网站?」好像可以这么理解哈哈哈

    而你把 nameserver 指向 Cloudflare 之后,namesilo 里这些 DNS 记录就失效了,不用管。
    Ranying
        8
    Ranying  
       2023-01-24 19:24:55 +08:00   ❤️ 1
    参见 https://hexo.io/zh-cn/docs/github-pages

    若你使用了一个带有 CNAME 的自定义域名,你需要在 source/ 文件夹中新增 CNAME 文件。

    全程不需要接触 SSL 证书,域名的 TLS 由 cloudflare 处理。
    BraveXaiver
        9
    BraveXaiver  
    OP
       2023-01-24 20:58:48 +08:00
    我突然想到一个问题,在 A 商家的控制台中,给 DNS record 加一个 TXT 的 record ,TXT 的内容与 B 商家也就是提供免费申请 SSL 证书的商家要求的一致,以证明我控制着这个域名。此时,还应该继续保证解析域名的是 A 商家背后的 DNS 解析服务器。在添加这个 TXT 完毕之后,大概要等上一天,我才应该在 A 商家的控制台中将 DNS 解析服务器换成

    emmm 我好像明白 @Ranying 你的意思是了,你的意思是不是 A 商家的控制台里根本不用改域名解析服务器?因为 HTTP 请求来到 DNS 解析服务器群时,会被分配给 A 商家背后的 DNS 解析服务器。而 HTTPS 请求来时,则会分配给 B 商家背后的 DNS 解析服务器。两个各干各的,我根本不用改来改去?
    Ranying
        10
    Ranying  
       2023-01-24 22:30:16 +08:00   ❤️ 1
    B 商家只是提供了域名的 SSL 证书,并不负责其他的东西。域名的 nameserver 在 A 商家时,DNS 记录可以在 A 商家的控制台里修改,但是无论是 HTTP 或者 HTTPS 请求,都和商家无关。

    例如域名 blog.mydomain.com 指向 A 记录 1.14.5.14 ,则请求 http://blog.mydomain.com 网页时系统会通过 DNS 服务器查询到 blog.mydomain.com 指向的服务器 IP ,然后向该 IP 发送 HTTP 协议,内容可能是这样的:

    GET / HTTP/1.1
    Host: blog.mydomain.com

    然后服务器可能会 301 跳转到 https://blog.mydomain.com 或者继续用 http 协议传输消息。

    上面过程 HTTP 请求和 HTTPS 请求都和 A 商家或者 B 商家无关,而是与域名指向的服务器有关。没有“商家背后的 DNS 解析服务器”这种东西,nameserver 只负责把 DNS 记录更新到 DNS 服务器,选择哪一个 DNS 服务器是用户自己决定的。

    不需要修改 nameserver ,如果 B 商家通过 txt 记录验证了您对域名有控制权并给你分发了 SSL 证书,你只需要把该证书配置到域名指向的服务器即可。在您用 GitHub Pages 的情况下,这个服务器即 GitHub 的服务器。您可以将 SSL 证书提交到 GitHub 中( https://docs.github.com/zh/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https 根据文档,该证书为 GitHub 服务器代替您申请)或者通过 cloudflare 反向代理 GitHub Pages 域名,这两种情况都不需要接触 SSL 证书。
    hanguofu
        11
    hanguofu  
       2023-01-25 15:17:18 +08:00
    顺便问问: 我有一个国外买的域名,没有在国内备 案 , 是否可以使用 华为云免费 DNS 服务把它指向 cloudflare 的节点 ?
    BraveXaiver
        12
    BraveXaiver  
    OP
       2023-01-25 15:22:31 +08:00
    @Ranying 谢谢你愿意这么细致地解答,但我还有几点不明白。。

    你说没有“商家背后的 DNS 解析服务器”这种东西,那 namesilo 的要求我将 nameserver 配置为 NS1.DNSOWL.COMNS2.DNSOWL.COM ,cloudflare 要去我配置为 jakub.ns.cloudflare.comulla.ns.cloudflare.com ,并且当我真得在 namesilo 的控制台里改成了 cloudflare 的 nameserver 后,每次更新 DNS record 都会受到 namesilo 的警告,强烈要求我重新改回去。那这两家供应商和它们提供的这个 nameserver 是什么关系呢?供应商是否有被自己控制的 nameserver ?

    另外 cloudflare 如下图所示,要求我改掉 nameserver ,可是这并不是必要的,但已经过去一天了,好像不改它就不进行到下一步,这又是为啥呢。。

    ![]( https://raw.githubusercontent.com/XSun771/ImgBed/master/20230125152108.png)
    BraveXaiver
        13
    BraveXaiver  
    OP
       2023-01-25 15:23:57 +08:00
    @hanguofu 你可以试试,我觉得应该不行。因为我想用 image.我的海外域名.top 作为七牛云的对象存储的外链的域名,七牛云会验证该域名不是国内已备案的域名,要求我只能为海外对象存储使用。
    Ranying
        14
    Ranying  
       2023-01-25 15:31:14 +08:00   ❤️ 1
    你的域名在 namesilo 购买,所以域名的 nameserver 可以在 namesilo 中控制,但是域名不仅仅只有 nameserver 这一项配置,还有续费,whois 等等其他的配置都需要在 namesilo 中进行。namesilo 提供了一个 nameserver ,并且将从其购买的域名的默认 nameserver 设置为它自己的。

    如果将 nameserver 改为了 cloudflare ,更新 DNS 记录就需要在 cloudflare 中进行而不是在 namesilo 。

    如果要用 cloudflare 的 CDN 服务,那么 将 nameserver 修改为 cloudflare 就是必要的。
    BraveXaiver
        15
    BraveXaiver  
    OP
       2023-01-25 15:46:18 +08:00
    @Ranying 谢谢,那我还是先把 namesilo 里 name server 换成 cloudflare 的,48 小时候再看 cloudflare 会不会有动静
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5803 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:58 · PVG 09:58 · LAX 17:58 · JFK 20:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.