https-github-pages-and-cloudflare

借助 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 无法验证域名

解决方法

  1. 暂时将 Cloudflare 中的 4 条 A 记录的代理状态改为「灰色云」(DNS only)
  2. 等待 3~15 分钟,GitHub 成功签发证书后,Enforce HTTPS 将变为可用
  3. 勾选启用后,将 Cloudflare 的 A 记录重新改回「橙色云 ☁️」

6. 附加推荐


设置裸域自动跳转至 wwwCloudflare → Rules → Redirect Rules 添加规则。好处:避免裸域 SSL 验证问题,用户访问裸域自动跳转,提升兼容性。

  • If hostname = xxxx.xx → 301 重定向至 https://www.xxxx.xx

添加 www 子域:Cloudflare → DNS 添加

类型 名称 代理状态
CNAME www yourname.github.io ☁️ Proxied