GitHub Pages + Cloudflare 自定义域名 HTTPS 配置指南
借助 GitHub Pages 托管静态网站,再通过 Cloudflare 实现 DNS 管理、HTTPS 加密与全球加速,是构建高效、安全个人博客或站点的现代主流方案。 本文将手把手带你配置自定义域名,实现 HTTPS 安全访问,并解决常见的证书问题如 Enforce HTTPS — Unavailable 和 SSL 526 错误。
1. 准备工作
事项 | 状态说明 |
---|---|
你已有一个域名 | 例如:xxxx.xx |
使用 GitHub Pages | 仓库已启用 Pages 功能 |
使用 Cloudflare | DNS 已接管(更换 NS 服务器) |
2. 配置 Cloudflare DNS
裸域(如 xxxx.xx
)添加 A 记录:进入 Cloudflare → DNS,添加以下 4 条 A 记录,并开启代理(橙色云 ☁️):这些是 GitHub Pages 官方静态 IP 地址。务必开启橙色云,否则 Cloudflare 无法提供 HTTPS 代理功能。
类型 | 名称 | 值 | 代理状态 |
---|---|---|---|
A | @ | 185.199.108.153 | ☁️ Proxied |
A | @ | 185.199.109.153 | ☁️ Proxied |
A | @ | 185.199.110.153 | ☁️ Proxied |
A | @ | 185.199.111.153 | ☁️ Proxied |
3. 配置 Cloudflare SSL
开启 Universal SSL(自动证书)
路径:SSL/TLS → Edge Certificates。确认你看到有效证书(例如):通用证书:xxxx.xx, \*.xxxx.xx(由 Cloudflare 管理)
设置正确的 SSL 模式
路径:SSL/TLS → Overview。选择:✅ Full
,千万不要使用 Strict
模式,它会导致 GitHub Pages 无法验证域名控制权,从而签发 HTTPS 失败。签发成功后再切回 Strict。
4. 配置 GitHub 仓库
添加 CNAME 文件(必须):在仓库根目录添加 CNAME
文件(无扩展名),内容仅为你绑定的域名:xxxx.xx
,提交并推送至 GitHub。
5. 启用自定义域名
进入 GitHub 仓库 → Settings → Pages:Custom domain 填入:xxxx.xx
,等待几分钟,GitHub 将尝试自动签发 HTTPS 证书。成功后,启用选项:✅ Enforce HTTPS
。
如果看到:Enforce HTTPS — Unavailable for your site because your domain is not properly configured to support HTTPS。说明 GitHub 无法验证你的域名所有权,常见原因:Cloudflare 开启了代理,GitHub 无法验证域名。
解决方法
- 暂时将 Cloudflare 中的 4 条 A 记录的代理状态改为「灰色云」(DNS only)
- 等待 3~15 分钟,GitHub 成功签发证书后,
Enforce HTTPS
将变为可用 - 勾选启用后,将 Cloudflare 的 A 记录重新改回「橙色云 ☁️」
6. 附加推荐
设置裸域自动跳转至 www:Cloudflare → Rules → Redirect Rules 添加规则。好处:避免裸域 SSL 验证问题,用户访问裸域自动跳转,提升兼容性。
- If hostname =
xxxx.xx
→ 301 重定向至https://www.xxxx.xx
添加 www 子域:Cloudflare → DNS 添加
类型 | 名称 | 值 | 代理状态 |
---|---|---|---|
CNAME | www | yourname.github.io | ☁️ Proxied |