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

2017-08-07 16:41:02 +08:00
 rebeccaMyKid

假如我买个域名,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 呢?

4056 次点击
所在节点    问与答
19 条回复
wildcat007
2017-08-07 16:44:06 +08:00
多个子域名可以指定到同一个 IP。多个不同的域名也可以指定到同一个 IP。
wildcat007
2017-08-07 16:44:49 +08:00
去掉假如!
自己去买个廉价域名,搭建一个 centos 7.x,用上 nginx 就会了。多动手试试
zhoulouzi
2017-08-07 16:47:33 +08:00
DNS 和 HTTP 是 2 个协议。web 服务器并不能干涉你的 DNS 解析过程。 子域名并不是必须设置 CNAME。
fffflyfish
2017-08-07 16:51:18 +08:00
子域名可以指向同一个 ip 下的不同端口,可以反向代理端口,也可以指向 www 下不同的目录,我记得要在 apache2 这类下设置
580a388da131
2017-08-07 16:51:43 +08:00
简单来说就是:没什么关系。
DNS 最终解析出来的都是 IP,服务器并不知道是 A 记录还是 CNAME 记录。
rebeccaMyKid
2017-08-07 16:55:31 +08:00
@wildcat007 老哥我在网上搜了 1 个多小时都没看明白,没几篇说得明白得,加我个微信,50 块包教会行不行。微信:maverlous2016
isCyan
2017-08-07 16:58:49 +08:00
第一行:是的,可以配置。
第二行:不是,可以有很多条。到最后会选择其中一个 ip 访问。
问:要设置子域名就必须设置 CNAME 是吗?
答:不是,所有记录都可以。
CNAME 必须指向域名而不能指向 IP:是的,如果指向 ip 应该是 a 记录或者 ipv6 的 aaaa 记录
最后的问题:
假设你给 aaa.com 设置了 a 记录指向 233.233.233.233
test.aaa.comblog.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
2017-08-07 16:59:39 +08:00
@rebeccaMyKid #6 我包教会你
rebeccaMyKid
2017-08-07 17:02:34 +08:00
@isCyan 老哥加我微信
isCyan
2017-08-07 17:04:15 +08:00
@rebeccaMyKid #9 该用户不存在,微信号发错了吧
rebeccaMyKid
2017-08-07 17:05:55 +08:00
@isCyan 关了所有添加方式。。。现在开了,不好意思
pqee
2017-08-07 17:23:03 +08:00
回答:没关系
Kilerd
2017-08-07 19:31:52 +08:00
多看书少看报,多写代码少思考。

自己动手试试不久知道了?
qucklay
2017-08-07 19:57:32 +08:00
A 是 Address cname 是 canonical name,字如其义,前者对应地址后者对应域名
rebeccaMyKid
2017-08-07 21:02:02 +08:00
@Kilerd 看了啊,搜了啊,问问题别觉总觉得别人没思考好么。
chinvo
2017-08-07 21:10:55 +08:00
@rebeccaMyKid 所以自己试试呗

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

谁告诉你子域名必须做 cname 的?前提就已经错了,后面都不用看了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX