rebeccaMyKid
V2EX  ›  问与答

CNAME 和子域名到底什么关系?一头雾水

  •  
  •   rebeccaMyKid · Aug 7, 2017 · 5195 views
    This topic created in 3343 days ago, the information mentioned may be changed or developed.

    假如我买个域名,aaa.com ,那剩下的 a.b.c.d.aaa.com 应该都可以我可以自己配置的吧。

    A 记录是不是只能将这个 aaa.com 指向 一个 IP 地址,那 A 记录只可能会有 1 条吧?

    要设置子域名就必须设置 CNAME 是吗?而且 CNAME 必须指向域名而不能指向 IP。

    test.aaa.com -> aaa.com

    blog.aaa.com -> aaa.com

    test.aaa.com 最终是当作 aaa.com 来解析的话,web 服务器怎么知道我访问的是 test.aaa.com 呢?

    19 replies  •  2017-08-07 21:15:13 +08:00
    wildcat007
        1
    wildcat007  
       Aug 7, 2017
    多个子域名可以指定到同一个 IP。多个不同的域名也可以指定到同一个 IP。
    wildcat007
        2
    wildcat007  
       Aug 7, 2017
    去掉假如!
    自己去买个廉价域名,搭建一个 centos 7.x,用上 nginx 就会了。多动手试试
    zhoulouzi
        3
    zhoulouzi  
       Aug 7, 2017
    DNS 和 HTTP 是 2 个协议。web 服务器并不能干涉你的 DNS 解析过程。 子域名并不是必须设置 CNAME。
    fffflyfish
        4
    fffflyfish  
       Aug 7, 2017
    子域名可以指向同一个 ip 下的不同端口,可以反向代理端口,也可以指向 www 下不同的目录,我记得要在 apache2 这类下设置
    580a388da131
        5
    580a388da131  
       Aug 7, 2017
    简单来说就是:没什么关系。
    DNS 最终解析出来的都是 IP,服务器并不知道是 A 记录还是 CNAME 记录。
    rebeccaMyKid
        6
    rebeccaMyKid  
    OP
       Aug 7, 2017
    @wildcat007 老哥我在网上搜了 1 个多小时都没看明白,没几篇说得明白得,加我个微信,50 块包教会行不行。微信:maverlous2016
    isCyan
        7
    isCyan  
       Aug 7, 2017   ❤️ 1
    第一行:是的,可以配置。
    第二行:不是,可以有很多条。到最后会选择其中一个 ip 访问。
    问:要设置子域名就必须设置 CNAME 是吗?
    答:不是,所有记录都可以。
    CNAME 必须指向域名而不能指向 IP:是的,如果指向 ip 应该是 a 记录或者 ipv6 的 aaaa 记录
    最后的问题:
    假设你给 aaa.com 设置了 a 记录指向 233.233.233.233
    test.aaa.com 和 blog.aaa.com 又设置了 cname 指向 aaa.com
    那么这两个子域名在解析时会发现设置了 cname 所以不能直接获得 ip 又会去解析一次 aaa.com 从而获得 233 这个 ip 地址作为服务器地址。
    dns 这个过程唯一的目的就是拿到了一个 ip,就结束使命了。
    而你的浏览器在拿到 ip 之后,如果你访问 test.aaa.com 那么 HTTP 协议的请求 Header 会有一个 "Host: test.aaa.com" 发送给你的 ip 的 web 服务器,web 服务器就知道你要访问的是 test 而不是 blog
    isCyan
        8
    isCyan  
       Aug 7, 2017
    @rebeccaMyKid #6 我包教会你
    rebeccaMyKid
        9
    rebeccaMyKid  
    OP
       Aug 7, 2017
    @isCyan 老哥加我微信
    isCyan
        10
    isCyan  
       Aug 7, 2017
    @rebeccaMyKid #9 该用户不存在,微信号发错了吧
    rebeccaMyKid
        11
    rebeccaMyKid  
    OP
       Aug 7, 2017
    @isCyan 关了所有添加方式。。。现在开了,不好意思
    pqee
        12
    pqee  
       Aug 7, 2017 via Android
    回答:没关系
    Kilerd
        13
    Kilerd  
       Aug 7, 2017
    多看书少看报,多写代码少思考。

    自己动手试试不久知道了?
    qucklay
        14
    qucklay  
       Aug 7, 2017 via iPhone
    A 是 Address cname 是 canonical name,字如其义,前者对应地址后者对应域名
    rebeccaMyKid
        15
    rebeccaMyKid  
    OP
       Aug 7, 2017
    @Kilerd 看了啊,搜了啊,问问题别觉总觉得别人没思考好么。
    chinvo
        16
    chinvo  
       Aug 7, 2017
    @rebeccaMyKid 所以自己试试呗

    任何子域名都可以支持任何类型解析,包括你说的 aaa.com 其实都是 @.aaa.com 子域名(这种又被称作裸域名
    shansing
        17
    shansing  
       Aug 7, 2017
    子域名只要设置好 hostname 就行了。
    rebeccaMyKid
        18
    rebeccaMyKid  
    OP
       Aug 7, 2017
    @chinvo 嗯,我已经懂了,谢谢各位
    akira
        19
    akira  
       Aug 7, 2017
    cname 和子域名没有关系,2 个完全不同的概念来的。

    谁告诉你子域名必须做 cname 的?前提就已经错了,后面都不用看了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2345 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 15:22 · PVG 23:22 · LAX 08:22 · JFK 11:22
    ♥ Do have faith in what you're doing.