rebeccaMyKid
V2EX  ›  问与答

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

  •  
  •   rebeccaMyKid · Aug 7, 2017 · 5344 views
    This topic created in 3377 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
    wildcat007
    Aug 7, 2017
    1
    多个子域名可以指定到同一个 IP。多个不同的域名也可以指定到同一个 IP。
    wildcat007
    wildcat007
    Aug 7, 2017
    2
    去掉假如!
    自己去买个廉价域名,搭建一个 centos 7.x,用上 nginx 就会了。多动手试试
    zhoulouzi
    zhoulouzi
    Aug 7, 2017
    3
    DNS 和 HTTP 是 2 个协议。web 服务器并不能干涉你的 DNS 解析过程。 子域名并不是必须设置 CNAME。
    fffflyfish
    fffflyfish
    Aug 7, 2017
    4
    子域名可以指向同一个 ip 下的不同端口,可以反向代理端口,也可以指向 www 下不同的目录,我记得要在 apache2 这类下设置
    580a388da131
    580a388da131
    Aug 7, 2017
    5
    简单来说就是:没什么关系。
    DNS 最终解析出来的都是 IP,服务器并不知道是 A 记录还是 CNAME 记录。
    rebeccaMyKid
    rebeccaMyKid
    OP
    Aug 7, 2017
    6
    @wildcat007 老哥我在网上搜了 1 个多小时都没看明白,没几篇说得明白得,加我个微信,50 块包教会行不行。微信:maverlous2016
    isCyan
    isCyan
    Aug 7, 2017❤️1
    7
    第一行:是的,可以配置。
    第二行:不是,可以有很多条。到最后会选择其中一个 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
    isCyan
    Aug 7, 2017
    8
    @rebeccaMyKid #6 我包教会你
    rebeccaMyKid
    rebeccaMyKid
    OP
    Aug 7, 2017
    9
    @isCyan 老哥加我微信
    isCyan
    isCyan
    Aug 7, 2017
    10
    @rebeccaMyKid #9 该用户不存在,微信号发错了吧
    rebeccaMyKid
    rebeccaMyKid
    OP
    Aug 7, 2017
    11
    @isCyan 关了所有添加方式。。。现在开了,不好意思
    pqee
    pqee
    Aug 7, 2017 via Android
    12
    回答:没关系
    Kilerd
    Kilerd
    Aug 7, 2017
    13
    多看书少看报,多写代码少思考。

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

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

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