讓我們一起搞懂自定義域名
本文轉(zhuǎn)載自微信公眾號(hào)「寫代碼的海怪」,作者海怪。轉(zhuǎn)載本文請(qǐng)聯(lián)系寫代碼的海怪公眾號(hào)。
前言
上次寫了一篇給 Gihub Pages 添加自定義域名的文章,之后感覺寫得還是偏實(shí)踐多一點(diǎn),只做到了受人以魚。
為了讓大家在別的場(chǎng)景下也能搞定自定義域名,比如騰訊云網(wǎng)頁(yè)部署、Heroku 自定義域名、自定義 CDN 域名。,今天就來(lái)寫篇更通用的文章來(lái)總結(jié)一下自定義域名那些事。
由來(lái)
如果我們要訪問(wèn)一臺(tái)電腦上的資源,一般是需要通過(guò) IP 地址來(lái)進(jìn)行訪問(wèn)的。比如電腦上跑了一個(gè) React App,那么在電腦的 http://127.0.0.1:3000 就可以訪問(wèn)本機(jī)的頁(yè)面
假如電腦 IP 地址為 192.168.1.10,而且手機(jī)和電腦都連上同一個(gè) Wifi,那么在手機(jī)上輸入 http://192.168.1.10:3000 也可以訪問(wèn)到這個(gè)網(wǎng)頁(yè)。
當(dāng)我們?cè)L問(wèn)服務(wù)器上的文件(html, js, css 等),其實(shí)本質(zhì)上也是訪問(wèn)遠(yuǎn)端的一臺(tái)電腦,也需要通過(guò) IP 地址來(lái)訪問(wèn)。這就導(dǎo)致一個(gè)問(wèn)題了:沒人能記得住這串?dāng)?shù)字。
既然記不住就起個(gè)名字嘍。 這就是域名的由來(lái),也就是像下面這樣 Map。
- 名字 -> IP 地址
DNS 服務(wù)器
但是等我們給這個(gè) IP 起了新名字之后怎么告訴別人呢?所以,得有一個(gè)超大日記本記錄上面這些 Map 關(guān)系:
- taobao.com -> xxx
- baidu.com -> yyy
- ...
DNS (Domain Name System) 服務(wù)器就是幫我們記錄并解析上面這些關(guān)系。這也就是為什么面試題 “輸入 URL 之后會(huì)發(fā)生什么” 里會(huì)有一步是要到 DNS 服務(wù)器解析 IP 地址,好讓我們?cè)L問(wèn)到正確的服務(wù)器資源。
域名解析
當(dāng)然,DNS 解析服務(wù)并不單單只有 域名 -> IP 一個(gè)功能,還能解析郵件服務(wù)器、CNAME 配置等。下面我就直接結(jié)合 騰訊云 的 DNS Pod 的解析規(guī)則來(lái)說(shuō)明吧。
A 記錄
首先,上面一直在說(shuō)的 域名 -> IP 地址 這樣的 Map 記錄叫做 A 記錄,也即 Active Record。 是最最最常見的域名解析。
比如我們買了個(gè)服務(wù)器,一般都會(huì)有公網(wǎng)的 IP 地址,我們只需要添加一條 A 記錄,把域名指向自己服務(wù)器的 IP 地址就好了。
另一個(gè)常見的例子就是 Github Pages 自定義域名 其中 的一種配置:添加 4 條 A 記錄,分別指向下面的 IP 地址:
- 185.199.108.153
- 185.199.109.153
- 185.199.110.153
- 185.199.111.153
CNAME
CNAME 就是域名的昵稱,可能理解為 IP 的昵稱(域名)的昵稱(CNAME)就是 CNAME。其實(shí)我們平常更多接觸到的并不是 A 記錄,而是 CNAME 記錄,常見于一些部署平臺(tái)上。
當(dāng)部署你的個(gè)人網(wǎng)頁(yè)時(shí),這些部署網(wǎng)站都會(huì)自動(dòng)給你一個(gè)非常 Low 的域名,比如 Github Pages 的 haixiangyan.github.io,或者 Heroku 的 haixiangyan.heroku.app,再或者騰訊云的 “亂碼” 域名 thedemo-9gf4vat5207cf224-1253834571.ap-shanghai.app.tcloudbase.com。
只要我們有了自己的域名,在 DNS 上添加一條 CNAME 記錄,指向上面這些第三方服務(wù)商自動(dòng)自成的域名,那么就能通過(guò)我們的域名直接訪問(wèn)第三方服務(wù)平臺(tái)上的資源了。
另外一個(gè)常見的場(chǎng)景就是 CDN 服務(wù)器,如果在騰訊云上買了一個(gè) CDN 服務(wù)器,它也會(huì)提供一個(gè) “不那么亂碼” 域名,比如我的個(gè)人網(wǎng)站就是 www.yanhaixiang.cn.cdn.dnsv1.com。同理,在 DNS 添加一條 CNAME 記錄指向 CDN 提供的域名就能訪問(wèn) CDN 上的資源了。
TXT
這個(gè) TXT 記錄,目前我使用到的場(chǎng)景是域名驗(yàn)證操作:當(dāng)騰訊云要驗(yàn)證這個(gè)域名是否是合法/激活的,那么需要你在 DNS Pod 上添加一條 TXT 記錄,記錄值騰訊云會(huì)提供給你。
添加了之后,騰訊云就會(huì)查看這條 TXT 記錄值是否正確,從而驗(yàn)證域名是否合法。
AAAA
上面的 A 記錄填寫都是針對(duì) IPv4 的 IP 地址,也是最最最常見的 IP 地址。計(jì)算機(jī)發(fā)展到現(xiàn)在,有些已經(jīng)用上了 IPv6 了,所以 AAAA 記錄就是用來(lái)解析成對(duì)應(yīng)的 IPv6 地址的,不過(guò)目前用的很少。
NS
NS 也就是 Name Server。還記得上面說(shuō)到的 DNS 么?NS 可以理解為 DNS 服務(wù)器。
一般域名服務(wù)商都會(huì)有自己的 NS,并且都默認(rèn)使用自己的 NS 來(lái)解析域名。如果你不想用當(dāng)前這個(gè)域名服務(wù)商的 NS 來(lái)解析域名,也可以換成別家的。
除非有特別需求,NS 記錄使用場(chǎng)景非常少。
MX
設(shè)置郵箱的記錄。沒怎么用過(guò),不評(píng)價(jià)。
其它記錄
我們一般接觸到的就是上面這些記錄,騰訊云還提供了別的記錄類型:
注意,上面像 “顯性 URL”、“隱性 URL” 可能在別的域名服務(wù)器是沒有的,比如 namesilo.com 這個(gè)便宜貨。
講真,國(guó)內(nèi)的云服務(wù)真的做的比國(guó)外好太多了,很多功能都很實(shí)用,強(qiáng)烈推薦大家使用國(guó)內(nèi)的云。
子級(jí)域名
了解了 DNS 解析記錄還不夠,還得了解域名的分級(jí)。
比如 www.baidu.com,頂級(jí)為 com,二級(jí)為 baidu,三級(jí)為 www。當(dāng)我們購(gòu)買域名時(shí),買的就是 頂級(jí) + 二級(jí)域名,直接把頂級(jí)和二級(jí)域名鎖死了。
當(dāng)添加域名解析記錄時(shí),可以在 主機(jī)記錄 這個(gè)字段里指定第三級(jí)的域名:
假如我有 yanhaixiang.com 這個(gè)域名,那么無(wú)論是 www.yanhaixiang.com 和 yanhaixiang.com 的第三級(jí)域名都是要指定的,并不是默認(rèn)就是 yanhaixiang.com 了。
圖里由上到下配置得到的域名完全體為:
主機(jī)記錄 | 域名完全體示例 |
---|---|
www | www.yanhaixiang.com |
@ | yanhaixiang.com |
* | abc.yanhaixiang.com, fuck.yanhaixiang.com |
mail.yanhaixiang.com |
后面兩個(gè)只是騰訊云給你的示例而已,就不舉例了。
子級(jí)的好處就在于可以不用上線一個(gè)網(wǎng)站就買一個(gè)對(duì)應(yīng)域名,太費(fèi)錢了~ 比如我之前買了 yanhaixiang.cn 這個(gè)域名,當(dāng)要用這一個(gè)域名分別指向 國(guó)內(nèi)騰訊云上的個(gè)人網(wǎng)站,以及 Github 提供的 Github Pages,在添加兩條記錄之后:
就可以在 https://yanhaixiang.cn 訪問(wèn)國(guó)內(nèi)的 騰訊云個(gè)人網(wǎng)站,在 https://github.yanhaixiang.cn 則訪問(wèn) Github Pages 的個(gè)人網(wǎng)站,非常悠亞。
域名購(gòu)買
國(guó)內(nèi):騰訊云、阿里云、華為云等都不錯(cuò)。國(guó)外:NameSilo、GoDaddy、AWS等。
個(gè)人推薦在國(guó)內(nèi)買,原因是國(guó)內(nèi)的云服務(wù)商功能非常齊全,而且服務(wù)之間關(guān)聯(lián)度非常高,可以說(shuō)有了國(guó)內(nèi)域名走遍天下都不怕,沒有國(guó)內(nèi)域名啥都捉襟見肘。
域名起名
除了 .com 和 .cn 常見的頂級(jí)域名外,還有 .xyz,.top 這些便宜的頂級(jí)域名可以選擇。
頂級(jí)域名中有一些是比較敏感的,比如 .law,這種就只能由專業(yè)機(jī)構(gòu)來(lái)注冊(cè):
如果實(shí)在想要 .com 這種牛逼的頂級(jí)域名,可以試著買帶 - 的二級(jí)域名,比如我之前就買了一個(gè) easy-refer.com 的域名,19 刀/年。
二級(jí)域名允許有 - 的原因是為了解決名字的混淆問(wèn)題,比如你的公司叫 Who Represents,然后你注冊(cè)了一個(gè) whorepresents.com 的網(wǎng)站,由于域名是不區(qū)分大小寫的,很容易被誤解為 Whore Presents ,變成了 妓女的禮物。除了這個(gè),還有 Experts Exchange 的 expertsexchange.com 被理解成 Expert Sex Change,當(dāng)場(chǎng)社死。
加了一個(gè) - 連字符可以更好地 “分詞”,不被別人誤解網(wǎng)站內(nèi)容。
二級(jí)域名除了英文還能選擇中文的,比如《愛情公寓》里的 www.張偉是混蛋.com:
不開玩笑,這個(gè)網(wǎng)站也是能正常訪問(wèn)的,里面的內(nèi)容都是和《愛情公寓》有關(guān)的內(nèi)容。最舊的貼子是 2011 年,這個(gè)網(wǎng)站大概也是那個(gè)時(shí)候上線的吧,不知不覺已經(jīng)過(guò)了 10 年了呢~
由于域名的 “唯一性”,在當(dāng)年,注冊(cè)了一個(gè)好的域名比建一個(gè)好看的網(wǎng)站更值錢,比如 apple.com, baidu.com 等。這也導(dǎo)致出現(xiàn)了一些投機(jī)分子:一出手就買一堆域名,然后等公司上門收購(gòu)域名。
備案
只有國(guó)內(nèi)的服務(wù)商需要做域名備案,也算是中國(guó)特色。最近我備案了 3 個(gè)域名,每個(gè)域名備案大概需要 1 個(gè)月的時(shí)間來(lái)備案。備案也不僅僅填幾個(gè)表格就完事了,還是挺多地方要注意的。
先決條件
按照國(guó)內(nèi)相關(guān)法律,域名備案前 必需要有一臺(tái)租期大于 3 個(gè)月的服務(wù)器。 而國(guó)內(nèi)一些云廠商為了能綁定銷售,一般都要你買自家的服務(wù)器。
當(dāng)然,只要有一臺(tái)上面的服務(wù)器,在期間內(nèi)可以給多個(gè)域名進(jìn)行備案。
還有一點(diǎn)域名之間不能同時(shí)備案,一時(shí)間只能備案一個(gè)。所以如果你有多個(gè)域名要備案,要挑最緊急的那個(gè)來(lái)備案哦~
備案中
給你的網(wǎng)站起名是非常困難的一件事,我經(jīng)常被打回,如果你做的是個(gè)人網(wǎng)站推薦使用 “個(gè)人項(xiàng)目展示” 這個(gè)名字,“個(gè)人網(wǎng)站” 是黑名單中的名字。
緊急聯(lián)系人電話最好別瞎填,有的時(shí)候備案那邊的人會(huì)抽查這個(gè)電話,如果這個(gè)緊急聯(lián)系人電話打不通,接不了,那么你還得更換,更換本質(zhì)上是又要有一遍備案流程,所以最好一開始就弄好這個(gè),別問(wèn)我是怎么知道的。
現(xiàn)在備案需要簽署一份類似“合同”之類的文件,需要用到紅色印泥,這個(gè)在打印室就有(當(dāng)時(shí)我差點(diǎn)在網(wǎng)上買了一個(gè))。
不過(guò),就算備案有問(wèn)題,工作人員幾乎 1 天就打電話過(guò)來(lái)讓你改正的,所以不用太慌~
總結(jié)
最后,稍微總結(jié)一下:
域名服務(wù)器 IP 的別名,方便大家記住服務(wù)器 IP 地址而生的
域名和 IP 地址的關(guān)系需要 DNS 服務(wù)器來(lái)解析。解析規(guī)則里 A 記錄和 CNAME 記錄用的最多
一個(gè)域名可以通過(guò)指定第三級(jí)域名來(lái)實(shí)現(xiàn)一個(gè)域名 host 多個(gè)網(wǎng)站
購(gòu)買域名最好買國(guó)內(nèi)的,一體性更強(qiáng)