GitHub Pages自定义域名
前言
github pages默认的网站URL式为username.github.io,其中username为自己的账号名,但是github提供了自定义域名的功能
自定义域名可以将网站的 URL 从默认值(如 username.github.io)更改为你拥有的任何域名,用户可以通过你自己拥有的域名来访问github pages
官方文档
GitHub Pages 文档 有详细的介绍和说明告诉用户如何自定义域名,有不了解的地方可以自行查阅官方文档
前置条件
- 备案好的域名
- 搭建好的github pages博客
具体操作
- 登录github,进入
设置–>GitHub Pages进行域名验证,输入被验证的域名(顶级域名),虽然页面显示可能需要几小时才生效,但是一般过几分钟就有已验证的提示信息的,生效很快的
- 输入被验证的域名后,能获取github提供的
DNS TXT记录,需要在域名提供商(我的是阿里云)添加一条TXT记录,类型选择TXT,记录类型和记录值填上github给出的值即可
- 在阿里云DNS控制台添加一条
cname,配置如下
- 添加相应的
A记录,在阿里云DNS控制台把github的IP地址映射添加上去,将顶级域名指向 GitHub Pages 的 IPv4 地址,GitHub Pages 的IP地址如下,大家用的都是相同的(指向相同的服务器),也可以添加上AAAA记录
1 | # github pages IPv4地址 |
回到GitHub Pages对应的仓库(不能直接点头像然后进入
设置),然后点击设置按钮点击
GitHub Pages,在自定义域输入顶级域名,然后查看左上角检查是否设置成功
- 打开自定义的域名检查能否正常打开网页,如果打不开,检查一下https设置
- www.liuhengfeng.xyz
- liuhengfeng.xyz
补充
为什么要域名验证?
最重要的是证明这个域名是我的,而不是我随便把自己我github pages挂在别人的域名上,如果不进行域名验证,那我把自己的博客挂在www.baidu.com上,那么别人打开百度显示的就是我的个人博客,这是一种变相的域名劫持。假设我有一个自定义域名 mycoolwebsite.com,我想将它绑定到我的 GitHub Pages 网站。当我在 GitHub Pages 设置中填写了这个域名,如果 GitHub 不要求验证域名,那么任何人都可以在他们的 GitHub Pages 上使用我的域名,就无法保证我的域名被我所用。
同时,这也是一种防止域名被盗用的手段。自定义域名验证确保只有真正的域名拥有者能够将该域名与 GitHub Pages 关联,避免其他人未经授权使用我的域名来托管他的内容。GitHub 要求我在 DNS 中添加一个验证记录,只有我能添加,其他人无法冒用,就能证明这个域名被我所掌握,就能在github修改github pages的默认URL
DNS中的TXT记录有什么用?
TXT记录是域名系统中的一种记录类型,用来存储文本信息,常用来验证域名所有权。许多平台(如 GitHub Pages、Google、Microsoft 等)要求在 DNS 中添加特定的 TXT 记录来证明用户对该域名的所有权。通常会在 DNS 控制台中添加一条特定的文本信息,只有域名属于我时才有权访问域名的 DNS 配置并添加TXT记录,起到验证作用。
还可以用来保证电子邮件安全,通过添加TXT记录来指定哪些邮件服务器有权代表你的域名发送电子邮件,从而减少垃圾邮件或伪造邮件。
TXT记录的验证原理
当我在 GitHub Pages 、 Google 等平台上要求验证我的自定义域名时,平台会生成一段唯一的验证代码(例如 juy6b0dyih78eh2a609aee276oub96e)。我需要将这段代码作为 TXT 记录添加到域名的 DNS 配置中,一段时间后,GitHub、Google 等平台会通过 DNS 系统查询我的域名 example.com 的 TXT 记录。如果平台查到的 TXT 记录与它给我的验证代码相匹配,就可以确认你对该域名的控制权,就允许我添加自定义域名
cname信息会映射IP地址
其他常见的DNS记录类型
A 记录(Address Record):将域名指向一个 IPv4 地址。例如,
example.com的 A 记录可能指向192.0.2.1。它是网站最基础的映射,告诉浏览器或应用访问哪个服务器。AAAA 记录(IPv6 Address Record):与 A 记录类似,但它指向的是 IPv6 地址。随着 IPv4 地址逐渐耗尽,IPv6 地址变得越来越重要。
CNAME 记录(Canonical Name Record):将一个域名别名映射到另一个域名。它通常用于将子域名(如
www.example.com)映射到主域名(如example.com)上,而不是直接指向 IP 地址。MX 记录(Mail Exchange Record):指定用于接收电子邮件的服务器。它定义了邮件应该发送到哪个邮件服务器,从而使电子邮件系统正常工作。
NS 记录(Name Server Record):定义负责解析域名的域名服务器。它指定了谁负责管理和解析特定域名的 DNS 信息。
SRV 记录(Service Record):用于定义某些服务(如 VOIP、IM、LDAP 等)的具体服务器位置。它能够指定服务的端口号以及优先级。
PTR 记录(Pointer Record):常用于 反向 DNS 查找,它把 IP 地址映射到域名,通常用于电子邮件服务器来验证发件服务器的身份。
SOA 记录(Start of Authority):包含关于域名的信息,例如负责域名的主 DNS 服务器以及域名的更新和管理策略。









