GitHub Pages 自定义域名:DNS、CNAME 与 HTTPS 设置

GitHub Pages 自定义域名设置指南:根域名与 www 的 DNS 记录、CNAME 文件的作用、域名验证,以及如何开启 HTTPS。

常见问题

GitHub Pages 根域名应该填哪些 IP 地址?

GitHub 官方文档(2026 年 11 月核对)为根域名(@)列出了四条 A 记录:185.199.108.153、185.199.109.153、185.199.110.153 和 185.199.111.153。如果还想支持 IPv6,可以再添加四条 AAAA 记录:2606:50c0:8000::153、2606:50c0:8001::153、2606:50c0:8002::153 和 2606:50c0:8003::153。GitHub 建议在添加 AAAA 记录的同时保留 A 记录。这些值可能会变动,粘贴之前请先对照官方文档确认。

仓库里一定要有 CNAME 文件吗?

只有从分支发布时才需要。这种情况下,你在 Settings > Pages(设置 > Pages)中保存自定义域名后,GitHub 会自动在源分支的根目录提交一个 CNAME 文件。如果你使用自定义的 GitHub Actions 工作流发布,GitHub 表示不会创建 CNAME 文件,已有的 CNAME 文件也会被忽略,不是必需的。

为什么 Enforce HTTPS 复选框是灰色的?

GitHub 表示,添加域名后最长可能需要 24 小时,该选项才会可用。证书是自动签发的,所以复选框一直点不了,通常是因为 DNS 还没生效,或者存在多余的记录,比如根域名上额外的 A、AAAA、ALIAS 或 ANAME 记录,又或者 www 的 CNAME 指向了 GitHub 以外的地址。另外,域名长度必须少于 64 个字符。如果一直没有变化,可以点击域名旁边的 Remove(移除),重新输入域名后再保存。

应该用根域名还是 www?

GitHub 推荐使用 www。官方文档称,www 子域名是最稳定的自定义域名类型,因为不会受到 GitHub 服务器 IP 地址变更的影响。无论你把哪一个设为自定义域名,只要两者的 DNS 都指向 GitHub Pages,GitHub 就会把另一个重定向到它。

GitHub Pages 自定义域名多久能生效?

GitHub 表示 DNS 变更最长可能需要 24 小时才能传播完毕。实际上很多记录会更快生效,但在你判断出了问题之前,最好先留出一天时间。

GitHub Pages 可以使用通配符 DNS 记录吗?

GitHub 强烈不建议使用 *.example.com 这样的通配符记录。官方文档指出,即使你已验证域名,通配符记录也会让你面临域名被接管的直接风险。请改为只为实际使用的子域名单独创建记录。

简短回答:在仓库中进入 Settings > Pages(设置 > Pages),在 Custom domain(自定义域名)下输入你的域名并保存。然后在 DNS 服务商处,用 CNAME 记录把 www 指向 <username>.github.io,再用四条 A 记录把裸域名(example.com)指向 GitHub。等 GitHub 签发证书后,勾选 Enforce HTTPS(强制 HTTPS)即可。整个过程就是一项仓库设置加几条 DNS 记录。大多数延迟都来自 DNS 传播,GitHub 称最长可能需要 24 小时。

下面所有内容均已在 2026 年 11 月对照 GitHub 官方文档核实。DNS 值是最可能变动的部分,粘贴之前请先到 GitHub Pages 自定义域名文档确认。

先选好域名类型

你希望访客访问的地址设为自定义域名需要的 DNS 记录说明
www.example.comwww.example.comwww 上的 CNAME 指向 <username>.github.io,外加根域名上的 A 记录GitHub 推荐的方案。example.com 会重定向到 www。
example.comexample.com根域名上的 A 记录(或一条 ALIAS/ANAME),外加 www 上的 CNAMEwww.example.com 会重定向到根域名。
blog.example.comblog.example.comblog 上的 CNAME 指向 <username>.github.io不需要根域名记录。

GitHub 文档指出,www 子域名是最稳定的选择,因为不受 GitHub 服务器 IP 变更的影响。如果没有特别的理由必须用裸域名,就选 www。如果你还在挑选域名注册商,可以看看我们的域名注册商对比,也可以参考域名到底要花多少钱,了解续费价格。

分步操作:绑定域名

  1. 在 GitHub 中添加域名。打开仓库,点击 Settings,然后点击 Pages(位于“Code, planning, and automation”下)。如果看不到 Settings 标签,请到“More”下拉菜单里找。在 Custom domain 字段中输入你的域名,点击 Save。
  2. 查看 GitHub 对仓库做了什么。如果你从分支发布,GitHub 会在该分支的根目录提交一个 CNAME 文件。如果你使用自定义的 GitHub Actions 工作流发布,则不会创建 CNAME 文件,已有的 CNAME 文件也会被忽略。
  3. 删除默认 DNS 记录。如果 DNS 服务商为你要使用的主机名自动创建了停放页或默认记录,请先删除。
  4. 在 DNS 服务商处创建 DNS 记录(见下一节)。
  5. 等待 DNS 传播。GitHub 称最长 24 小时。你可以在终端用 dig www.example.com +noall +answer 查看进度。
  6. 开启 Enforce HTTPS,等该选项可用时再勾选(见下文)。

顺序没有你想的那么重要

你可以在 GitHub 保存域名之前或之后创建 DNS 记录。真正的风险在于:DNS 已经指向 GitHub Pages,而这个域名却没有被任何仓库认领。GitHub 警告说,只配置 DNS 而不在 GitHub 中添加域名,可能让别人在你的某个子域名上托管网站。所以请先在 GitHub 中保存域名,再配置 DNS。

DNS 记录

www 或任意子域名:一条 CNAME

类型主机值
CNAMEwww<username>.github.io

请使用你的用户名或组织名,不要带仓库名。GitHub 特别说明,不要把 CNAME 指向仓库设置中显示的那个唯一的 *.pages.github.io 地址。

根域名:四条 A 记录(2026 年 11 月核对)

类型主机值
A@185.199.108.153
A@185.199.109.153
A@185.199.110.153
A@185.199.111.153

如果需要 IPv6,可以选择性地在 @ 上添加以下 AAAA 记录:

类型主机值
AAAA@2606:50c0:8000::153
AAAA@2606:50c0:8001::153
AAAA@2606:50c0:8002::153
AAAA@2606:50c0:8003::153

GitHub 建议,即使添加了 AAAA 记录,也要保留 A 记录,因为 IPv6 的普及程度仍不均衡。如果你的 DNS 服务商支持 ALIAS 或 ANAME 记录,也可以用一条指向 <username>.github.io 的记录来代替 A 和 AAAA 记录。

有两个常见错误要避开:

  • 根域名上的多余记录。GitHub 指出,在 @ 上添加额外的 A、AAAA、ALIAS 或 ANAME 记录,或者让 www 的 CNAME 指向别处,都可能导致 HTTPS 证书无法生成。
  • 把子域名指向根域名。GitHub 警告说,这会导致强制 HTTPS 出现问题,甚至可能让子域名完全无法访问你的网站。请把子域名指向 <username>.github.io。

有些服务商用 @ 表示根域名主机,有些则要求留空或填写完整域名。这是服务商自己的习惯,与 GitHub 的设置无关。

开启 HTTPS

GitHub 通过 Let's Encrypt 为自定义域名签发证书。DNS 解析正确之后:

  1. 回到 Settings > Pages。
  2. 查看域名旁边是否出现对勾,出现即表示 DNS 检查已通过。
  3. 勾选 Enforce HTTPS。

GitHub 表示,该选项最长可能需要 24 小时才会可用。如果保存几分钟后仍未出现,GitHub 建议的办法是:点击自定义域名旁边的 Remove,重新输入域名后再点 Save。另外,域名必须少于 64 个字符才能创建证书。

如果复选框一直是灰色,请逐项排查:

  • [ ] 该主机的 DNS 已解析到 GitHub(dig 能看到四个 IP,或你的 <username>.github.io CNAME)
  • [ ] 根域名上没有多余的 A、AAAA、ALIAS 或 ANAME 记录
  • [ ] www 的 CNAME 指向 <username>.github.io,而不是根域名或 pages.github.io 地址
  • [ ] Settings > Pages 中的域名与你在 DNS 中填写的完全一致
  • [ ] 你已经移除并重新添加过一次域名

验证域名(强烈建议)

验证可以防止其他 GitHub 账号在你的 Pages 站点被取消关联后认领你的域名。GitHub 列出了可能发生域名被接管的情形:删除仓库、账单方案降级,或任何导致域名被取消关联、但仍为 GitHub Pages 配置且未经验证的变更。

  1. 打开你的个人资料设置(不是仓库设置),然后在侧边栏点击 Pages。
  2. 点击 Add a domain,输入域名并确认。
  3. 按 GitHub 提示创建 TXT 记录。主机名形如 _github-pages-challenge-USERNAME.example.com。
  4. 用 dig _github-pages-challenge-USERNAME.example.com +nostats +nocomments +nocmd TXT 确认记录已可见。
  5. 回到 GitHub,使用域名旁边的菜单,选择 Continue verifying,然后点击 Verify。

GitHub 称这一步可能立即完成,也可能需要最长 24 小时。验证完成后请保留该 TXT 记录。同时不要使用 *.example.com 这样的通配符记录:GitHub 指出,即使域名已验证,它们也有被接管的风险。

常见问题

  • 自定义域名返回 404,但 github.io 地址正常。说明域名没有在 Settings > Pages 中保存,或者 DNS 尚未传播。两项都检查一下。
  • 部署之后域名总是被重置。如果你从分支发布,源分支中的 CNAME 文件必须包含你的域名。清空分支根目录的构建,或者遗漏该文件的部署,都可能把它删掉。改用自定义 Actions 工作流后,就不再需要这个文件。
  • 根域名能访问,www 不行(或反过来)。两个主机名都需要有记录。别忘了,GitHub 只有在配对主机的 DNS 同样指向 GitHub Pages 时,才会进行重定向。
  • 证书一直没有签发。按上面的清单逐项检查,优先排查多余的记录。

如果你不想自己管理 DNS

GitHub Pages 很适合已经放在代码仓库里的静态站点。如果你主要是想让网站用自己的域名上线,We.Inc 的自定义域名功能会在构建器内带你完成同样的 DNS 步骤,而域名连接指南适用于任何服务商。We.Inc 的免费方案允许你用现成模板发布最多三个网站;能根据提示词生成网站的 AI 构建器,则从 Starter 方案起提供,价格为每月 $20。你可以在这里注册。

免费开始 · 无需信用卡

Umair Ali Sadaqat

We.Inc 创始人

Umair 是 We.Inc 的创始人。他撰写有关 AI 建站、代理机构以及经营网站工作室的文章。

准备好打造出色的作品了吗?

加入 15,000+ 家使用 We.Inc 在一个平台上完成上线、增长和自动化的企业。

免费开始

无需信用卡 · 联系销售

相关内容: 博客

产品

适用对象

功能

资源

公司

网站地图