Skip to content
dai123xPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

📚 GitHub Pages 自定义域名部署完整实战教程 & 检索指南

GitHub Pages HTTPS DNS Cost

目标:从零开始选购域名,绑定至 GitHub Pages 静态网站,拥有免费、自带 HTTPS 绿锁、自动续期 SSL 证书的独立域名网站。 特性:全程零服务器费用,无需维护后端,适合 HTML/CSS/JS、Hexo、Hugo、VuePress、VitePress 等静态站点。


🧭 快速检索与痛点速查导航(按问题直达)

🔍 搜索关键词 / 遇到的问题 💡 核心原因与速解 📖 对应章节
买完域名怎么选? / 腾讯云实名认证 国内域名必须先过实名审核,无需买服务器,托管选 GitHub Pages 即可 第 1 章 · 第 2 章
仓库怎么建? / 仓库名必须叫什么 必须公开(Public),仓库名严格为 <你的GitHub用户名>.github.io 第 4 章
TXT 验证记录怎么填? / 所有权验证 主机记录填 _github-pages-challenge-<用户名>(不能带域名后缀),记录值贴长串字符 第 5 章
ERR_EMPTY_RESPONSE / 打不开网站 DNS 记录未生效、缺少 A/CNAME 解析或 Pages 发布配置有误 第 6 章 · 第 10 章
DNSPod 报“负载均衡超出套餐限制” 当前套餐限制同主机记录数量,按套餐支持添加(GitHub 官方推荐 4 条 A 记录) 第 6.2 节
CNAME 解析失效 / 报错 核对目标主机名和 DNS 记录格式;控制台是否显示末尾根点 . 取决于服务商 第 6.3 节
访问出现 404 Not Found 根目录缺少 index.html、放进了子文件夹,或文件名大小写错误(必须全小写) 第 7 章
Enforce HTTPS 是灰色的勾选不了 DNS 解析尚未完全生效,或 Let's Encrypt 证书正在签发(需 5~30 分钟),勿重复点保存 第 8 章 · 第 10 章
浏览器提示“网站不安全” 证书未签发完成;无需去服务商下载证书,GitHub 会全自动签发并定期轮换 第 8 章 · 附录 A
如何用命令行自检 DNS 状态 使用 nslookup 你的域名 或 ipconfig /flushdns 刷新本地 DNS 缓存 第 9 章

🏷️ 检索关键词索引(Keywords & Topics)

为方便开发者在 GitHub 站内及搜索引擎中检索,本仓库涵盖以下高频搜索主题:

  • 核心概念:GitHub Pages, 自定义域名 (Custom Domain), 独立域名建站, 静态网站托管, DNS 解析, 免费建站
  • 解析与记录:DNSPod, 腾讯云域名, A 记录 (185.199.108.153), CNAME 别名解析, TXT 验证记录, _github-pages-challenge
  • 安全与证书:HTTPS 强制启用 (Enforce HTTPS), SSL 证书自动续期, Let's Encrypt, DV 证书区别
  • 故障排查:ERR_EMPTY_RESPONSE, 404 Not Found, DNS Check Failed, DNS Check in Progress, 子域名负载均衡超限

⚡ 核心参数速查备忘单(Cheatsheet)

1. GitHub Pages 官方 4 个固定 IPv4 节点

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

注:建议按服务商套餐支持数量配置(官方推荐 4 条;若免费套餐限制同主机记录数量,按最大允许数量配置)。

2. DNS 记录配置标准对照表

类型 主机记录 记录值 关键细节
TXT _github-pages-challenge-<用户名> <GitHub 生成的随机字符> 可选:用于账户级域名所有权验证(Verified domains)
A @ 185.199.108.153 主域名解析节点(推荐配置 4 个 IP)
CNAME www <你的GitHub用户名>.github.io www 子域名解析(根点是否显示视控制台而定)

📑 教程目录


第 0 章 开始之前:先看懂全流程

阶段 做什么 花费 耗时
1 购买域名 + 实名认证 几十元/年 支付即时,实名审核约几分钟~1个工作日
2 注册 GitHub 账号 免费 几分钟
3 创建 Pages 专用仓库 免费 几分钟
4 域名所有权验证(TXT) 免费 几分钟 + DNS 生效 5~15 分钟
5 配置 DNS 解析(A / CNAME) 免费 几分钟 + DNS 生效 10~30 分钟
6 上传首页文件 index.html 免费 几分钟
7 绑定域名 + 开启 HTTPS 免费 证书签发几分钟~几十分钟
8 访问测试 免费 即时

两个概念先分清(很重要):

  • TXT 验证记录:用于 GitHub 账户级域名所有权验证(可选安全措施),建议开启以降低域名在平台被抢占风险。
  • A / CNAME 解析记录:把域名流量指向 GitHub Pages,用于真正访问网站;仓库 Custom domain 与 Pages 发布配置需保持一致。
  • TXT 验证不是网站发布或 DNS 解析的前置条件;配置正确解析记录才是让网站正常访问的关键。

第 1 章 购买域名(以腾讯云为例)

域名服务商可选腾讯云、阿里云、华为云等,流程大同小异。本教程以腾讯云(DNSPod)为例,因为其解析面板免费且操作简单。

1.1 注册 / 登录腾讯云账号

  1. 浏览器打开:https://cloud.tencent.com
  2. 点右上角【注册】/【登录】,支持微信扫码或手机号注册。
  3. 首次使用建议顺手完成账号实名(个人即可),后面买域名、做域名实名认证都要用。

1.2 进入域名注册页面

  1. 登录后,在顶部搜索框输入:域名注册
  2. 点击搜索结果进入【域名注册】产品页(也可直接在浏览器输入 https://dnspod.cloud.tencent.com 进入 DNS 控制台,在左侧找"域名注册")。

1.3 搜索你想要的域名

  1. 在搜索框输入你想要的名称(如 myname),下方勾选想买的后缀。
  2. 后缀说明:
    • .com:最主流,约 60~80 元/年
    • .cn:国内常用,需实名
    • .cloud、.top、.xyz 等新后缀:便宜(有的几元~几十元/年),适合个人
  3. 点【查询】,查看结果:
    • ✅ 可注册:显示价格,可加入购物车
    • ❌ 已被注册:换名称或换后缀再搜

1.4 加入购物车并下单

  1. 选中心仪域名 → 点【加入购物车】。
  2. 在购物车选择购买时长(建议先买 1 年,后续可续费)。
  3. 点【去结算】。

1.5 填写域名信息(重要)

下单页需要填写域名所有者信息(用于 WHOIS 登记):

  • 所有者类型:个人
  • 姓名、联系电话、邮箱:如实填写
  • 建议顺便勾选"开启隐私保护"(如服务商提供),避免个人信息公开

1.6 支付

支持微信 / 支付宝 / 银行卡等,支付后域名立即生效。

1.7 完成域名实名认证(必须做!)

国内注册局规则:域名必须实名认证,未实名可能被暂停解析或锁定,网站打不开。

  1. 进入【控制台 → 域名注册 → 我的域名】,找到你的域名。
  2. 点击域名,或右侧【更多操作 → 实名认证】。
  3. 按提示创建/使用信息模板:
    • 个人:上传身份证正反面照片,填写姓名、身份证号
    • 企业:上传营业执照
  4. 提交后等待审核:通常几分钟 ~ 1 个工作日,状态变为"正常 / 已实名"即可。

⚠️ 实名审核期间不影响域名解析配置,但建议尽早提交,防止网站上线后被关停解析。

1.8 确认域名已接入解析服务

  • 腾讯云购买的域名默认使用 DNSPod(腾讯云解析),无需额外开通。
  • 验证方法:控制台 → 域名注册 → 我的域名,域名列表里"解析"状态显示正常即可。
  • 下一步所有"添加解析记录"的操作,都在 DNSPod 解析控制台 完成。

第 2 章 确定托管方式:为什么选 GitHub Pages

需求 选择
纯静态网页(HTML/CSS/JS) GitHub Pages(免费) ✅
需要 PHP、数据库、后端程序 云服务器 + Nginx(付费)
  • GitHub Pages 优点:免费、自带 HTTPS 且自动续期、不用管服务器。
  • 缺点:只支持静态文件,不支持后端代码。
  • 本教程走 GitHub Pages 方案;服务器方案要点见附录 B。

第 3 章 注册 GitHub 账号

  1. 打开:https://github.com
  2. 点【Sign up】(注册):
    • Username(用户名):全网唯一,记牢,后面仓库名和 CNAME 都要用它
    • Email:你的邮箱
    • Password:设置密码
  3. 按提示完成验证码与邮箱验证(GitHub 会给注册邮箱发验证邮件,点邮件里的链接确认)。
  4. 注册完成后登录 GitHub。

💡 用户名建议:全小写字母 + 数字(如 myname123),避免大小写混淆。


第 4 章 创建 GitHub Pages 专用仓库

4.1 新建仓库

  1. 登录 GitHub 后,点击页面左上角绿色按钮【New】(新建仓库)。
  2. 填写仓库信息。

4.2 仓库命名(必须严格遵守)

  • Repository name 必须一字不差填:<你的GitHub用户名>.github.io
  • 示例:用户名是 myname123,仓库名就是 myname123.github.io
  • 这是个人站点专用命名,写错就无法正常启用 Pages。

4.3 可见性

  • 按当前 GitHub 账户套餐与仓库策略选择可见性,不要把"必须公开"当作所有方案的通用要求:免费个人账号只能从公开仓库发布 Pages;Pro / Team / Enterprise 付费套餐也支持从私有仓库发布(私有仓库 Pages 属付费功能)。
  • 本教程以 Public(公开仓库)为准。若选择私有仓库,请确认 Pages 发布权限,并注意站点本身默认仍可被公开访问——不要在仓库中提交 API 密钥、密码或其他不应公开的内容。

4.4 创建

  • 点底部绿色【Create repository】。
  • 创建成功后,浏览器地址栏显示:github.com/<用户名>/<用户名>.github.io

第 5 章 域名所有权验证(TXT 记录)

目的:向 GitHub 证明"这个域名确实归你所有"。注意区分两个不同层面的操作:**账号级域名验证(Verified domains)**验证域名所有权,一次验证对账号下所有仓库生效,可降低他人把你的域名绑定到其 Pages 站点的风险;**仓库级自定义域名(Custom domain)**则是把域名绑定到本仓库的站点,是让站点通过该域名访问的必要设置。二者目的与生效范围不同,不能互相替代;未做账号级验证时,仓库绑定过程中按页面提示补 TXT 记录即可。

方式一(推荐,账号级验证一次管全局)

  1. 点击右上角头像 → 【Settings】→ 左侧菜单找 Pages。
  2. 找到 Custom domains(Verified domains) 区域,点 Add a domain。
  3. 输入你的域名(如 example.com),点 Add domain。
  4. GitHub 会生成两条验证信息(先记下来):
    • 主机记录:形如 _github-pages-challenge-<你的GitHub用户名>
    • 记录值:一长串随机文本

完成账号级验证后,仍需单独进入仓库【Settings】→【Pages】→ Custom domain 填入域名并保存,TXT 验证不会代替这一步。

方式二(仓库级,绑定域名时触发)

  1. 进入你的仓库 → 【Settings】→ 【Pages】→ Custom domain 输入框填域名 → Save。
  2. 若域名尚未做过账号级验证,GitHub 会要求添加一条 TXT 验证记录,内容同上;验证通过后,域名即绑定到本仓库站点。

5.1 去 DNSPod 添加 TXT 记录

  1. 打开 https://dnspod.cloud.tencent.com,登录腾讯云账号。
  2. 在域名列表点击你的域名(如 example.com),进入记录管理页面。
  3. 点蓝色按钮【添加记录】,按下表填写:
字段 填写内容
主机记录 _github-pages-challenge-<你的GitHub用户名>(不要加域名后缀)
记录类型 TXT
线路类型 默认
记录值 完整复制 GitHub 给的那一长串随机文本,不删减、不换行
TTL 600(10 分钟,默认即可)
  1. 点【确认】保存。

5.2 等待生效

  • DNS 生效一般 5~15 分钟,个别网络最长 1 小时。
  • 生效期间不要反复修改记录。

5.3 回到 GitHub 验证

  • 回到 GitHub 的域名验证页面,点验证按钮。
  • 状态变为 Verified / DNS check successful 即通过。

✅ 常见状态解读:

  • DNS Check in Progress:正在检测,等待
  • DNS check successful:验证成功
  • DNS check failed:TXT 记录填错或未生效,回 DNSPod 核对(注意主机记录不能带域名后缀、记录值不能复制错)
  • 验证成功 ≠ 网站可访问,必须继续第 6 章配置 A/CNAME 解析。

第 6 章 配置 DNS 解析记录(让域名指向 GitHub)

目标:访问 example.com 时,DNS 把你的请求转到 GitHub Pages 服务器。

6.1 打开解析面板

DNSPod 控制台 → 点你的域名 → 【记录管理】页面(就是刚才加 TXT 的地方),点【添加记录】。

6.2 添加 A 记录(主域名 @)

GitHub Pages 官方提供 4 个固定 IP: 185.199.108.153 / 185.199.109.153 / 185.199.110.153 / 185.199.111.153

⚠️ DNSPod 免费版限制:同一主机记录(如 @)最多添加 2 条 A 记录(负载均衡上限)。加第 3、4 条会报"子域名负载均衡数量超出套餐限制"。任选其中 2 个 IP 即可正常访问,不用 4 条。

逐条添加以下两条:

记录 1

字段 填写内容
主机记录 @(代表主域名本身)
记录类型 A
记录值 185.199.108.153
TTL 600

记录 2

字段 填写内容
主机记录 @
记录类型 A
记录值 185.199.109.153
TTL 600

6.3 添加 CNAME 记录(www 子域名)

字段 填写内容
主机记录 www
记录类型 CNAME
记录值 <你的GitHub用户名>.github.io.
TTL 600

⚠️ 记录值末尾必须带英文小数点 .(如 myname123.github.io.),漏掉会导致解析失效!

6.4 添加完成后的清单核对

类型 主机记录 记录值 用途
TXT _github-pages-challenge-... 长串随机文本 域名所有权验证(保留不动)
TXT _dnsauth... 长串随机文本 域名所有权验证(保留不动)
A @ 185.199.108.153 主域名解析
A @ 185.199.109.153 主域名解析
CNAME www <用户名>.github.io. www 子域名解析
  • 原 TXT 验证记录不要删除。
  • 此时面板一共 5 条记录(2 TXT + 2 A + 1 CNAME),不会超免费版限制。

6.5 等待生效

  • 新增记录生效:一般 10~30 分钟,最长 24 小时(与网络运营商缓存有关)。
  • 生效期间打开网页报 ERR_EMPTY_RESPONSE / 无法访问,都是正常现象,不是配错了,等生效即可。

第 7 章 上传首页文件 index.html

仓库根目录必须有 index.html,否则即使解析通了也会 404。

7.1 进入仓库

浏览器打开:https://github.com/<你的GitHub用户名>/<你的GitHub用户名>.github.io

7.2 新建文件

  1. 点【Add file】→【Create new file】。
  2. 文件名填写:index.html(必须全小写,Index.html、INDEX.HTML 都不行)。
  3. 必须放在仓库根目录(不要创建文件夹再放进去)。

7.3 粘贴页面代码

基础版(够用):

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>example.com</title>
</head>
<body>
<h1>🎉 GitHub Pages 部署成功!</h1>
<p>域名:example.com</p>
</body>
</html>

进阶版(好看一点):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example.com</title>
<style>
  body { font-family: system-ui, sans-serif; display: flex; align-items: center; justify-content: center; min-height: 100vh; margin: 0; background: #f5f7fa; }
  .card { background: #fff; padding: 48px 64px; border-radius: 16px; box-shadow: 0 4px 24px rgba(0,0,0,.08); text-align: center; }
  h1 { color: #24292f; margin-bottom: 8px; }
  p { color: #57606a; }
</style>
</head>
<body>
  <div class="card">
    <h1>🎉 部署成功!</h1>
    <p>example.com 已接入 GitHub Pages</p>
  </div>
</body>
</html>

7.4 提交文件

  1. 滚动到页面最底部(或点右上角【Commit changes】)。
  2. 提交信息保持默认即可,点绿色【Commit new file】保存。

7.5 检查部署状态(可选)

  1. 仓库顶部点【Actions】,查看 Pages 构建工作流。
  2. 绿色 ✅ 成功:部署完成;红色 ❌:点进去看报错。
  3. 第一次提交后,Pages 构建约需 2~5 分钟,期间访问 404 是正常的。

第 8 章 绑定自定义域名 + 开启 HTTPS

  1. 进入仓库 → 点顶部【Settings】→ 左侧或页面中找 Pages。
  2. 在 Custom domain 输入框填入你的域名(如 example.com),点【Save】。
  3. 页面出现提示 DNS Check in Progress:GitHub 正在后台检测你的 DNS 解析。
    • ⚠️ 此时不要反复点 Save,每次保存都会重新触发校验,拉长等待。
  4. 检测通过后,Enforce HTTPS(强制 HTTPS)复选框从灰色变为可勾选。
  5. 勾选 Enforce HTTPS。GitHub 会自动为域名申请 Let's Encrypt 免费证书并自动续期。

状态解读:

  • DNS Check in Progress:等待,属正常
  • DNS check successful:校验通过,继续等证书
  • DNS check failed:A/CNAME 记录有问题,回第 6 章核对(常见:CNAME 末尾缺 .、A 记录 IP 填错)
  • Enforce HTTPS 灰色:证书未签发,等待即可;成功后自动解锁

⚠️ 关于 SSL 证书的常见误区:

  • 不需要自己在服务商申请证书!GitHub 自动完成。
  • 之前在腾讯云申请/下载的免费 SSL 证书,此方案完全用不上,可放着不用。
  • 证书签发一般几分钟 ~ 几十分钟;即使未签发,http:// 也可能已能访问,只是浏览器提示"不安全"。

第 9 章 访问测试

9.1 无痕窗口访问

  • 用浏览器无痕/隐私窗口访问(避免本地缓存干扰):
    • https://example.com
    • https://www.example.com

9.2 命令行诊断(Windows CMD / PowerShell)

nslookup example.com
  • 正常结果:返回 185.199.108.x 或 185.199.109.x 等 GitHub IP。
  • 返回其他 IP 或超时:DNS 缓存未更新,继续等待或清缓存(CMD: ipconfig /flushdns)。

9.3 快速自检清单

  • 域名实名认证已通过
  • 仓库名是 <用户名>.github.io
  • 仓库根目录有 index.html(全小写)
  • DNSPod 有 2 条 A + 1 条 CNAME(+2 条 TXT 保留)
  • Custom domain 已绑定,DNS check successful
  • Enforce HTTPS 已勾选
  • Actions 部署工作流绿色成功

第 10 章 常见问题排查表

现象 可能原因 解决办法
ERR_EMPTY_RESPONSE / 无法访问 只做了 TXT 验证、没加 A/CNAME 解析;或 DNS 未生效 补全第 6 章 3 条解析记录,等待 10~30 分钟
404 页面 仓库没有 index.html;文件放进了子文件夹;文件名大小写不对 在仓库根目录建 index.html(全小写)
404 持续 Pages 首次构建未完成 进【Actions】看部署,等绿色成功(2~5 分钟)
404 且 Actions 成功 分支/目录配置不对 Pages 来源选 Deploy from a branch,分支 main,目录 /(root)
Enforce HTTPS 灰色不可勾选 DNS 校验或证书签发未完成 等待,勿反复保存;通过后自动解锁
CNAME 解析失效 记录值末尾漏了小数点 . 补上末尾 .
添加 4 条 A 记录报错"负载均衡超出限制" DNSPod 免费版同主机记录最多 2 条 A 只保留 2 条 A 记录即可
DNS check failed TXT 或 A/CNAME 记录填错 核对主机记录不带域名后缀、记录值完整、CNAME 末尾带 .
访问提示"不安全" 证书尚未签发完成 等待;勾选 Enforce HTTPS 后自动签发
国内访问慢/打不开 网络问题或 DNS 缓存 换网络测试、清 DNS 缓存(CMD:ipconfig /flushdns)

附录 A:关于域名与 SSL 证书的常见疑问

  1. GitHub Pages 需要自己在服务商买证书吗? 不需要。GitHub 自动签发 Let's Encrypt 免费证书并自动续期,零成本零维护。

  2. 买域名送证书吗? 腾讯云等平台提供免费的 DV 证书(如 90 天期、需手动续期),但只适用于服务器方案。GitHub Pages 方案用不到。

  3. 域名实名认证没做会怎样? 国内规则:未实名可能被暂停解析、域名被锁定,网站打不开。务必尽早完成。

  4. 免费域名能绑 GitHub Pages 吗? 可以,只要你能控制该域名的 DNS 解析(能添加 TXT/A/CNAME 记录即可)。

  5. 以后想换绑定怎么办? 仓库 Settings → Pages → Custom domain 改为新域名即可;旧解析记录在 DNSPod 删除。


附录 B:服务器方案要点速查(升级备用)

若以后网站需要动态功能(PHP、数据库),改用云服务器方案:

  1. 购买轻量应用服务器(推荐香港地域,免备案),记下公网 IP。
  2. SSH 登录服务器:
    systemctl status nginx        # 检查 Nginx 是否安装/运行
    apt update && apt install nginx -y   # 未安装则安装
    systemctl start nginx && systemctl enable nginx
  3. 校验配置:nginx -t(输出 test is successful 才正常)。
  4. 控制台防火墙放行 80 / 443 端口(来源 0.0.0.0/0)。
  5. 网站根目录放 index.html 测试页。
  6. 域名解析:@ 和 www 各加一条 A 记录,指向服务器公网 IP(此时 DNSPod 免费版 2 条 A 也够用)。
  7. 在服务器配置 HTTPS(上传服务商签发的证书 + 配置 Nginx 443 站点)。

附录 C:日常维护清单

  • 域名续费:到期前在服务商续费,避免域名过期被回收。
  • 域名实名:保持已完成状态,续费不影响。
  • 修改网站:直接改仓库里的文件并 Commit,GitHub 自动重新构建发布。
  • 证书:GitHub 自动续期,无需任何操作。
  • 解析:不要随意删除那 2 条 TXT 验证记录(删了可能触发重新验证)。

本教程已去除域名、GitHub 用户名等全部个人敏感信息,通用步骤可直接复用。 #(注:内容由AI生成)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors