阿里云 CDN 加速 GitHub Pages 完整指南
GitHub Pages 的服务器在境外,国内用户直接访问 xxx.github.io 速度不稳、延迟高。通过阿里云 CDN 接入国内节点,可以在不改动源站的前提下大幅提升国内访问体验。
前提条件
- 一个你自己的域名(必须——你不能把
github.io直接接入阿里云 CDN) - 一个 GitHub Pages 仓库
- 阿里云账号(完成实名认证)
- 如果加速区域选中国大陆:域名必须完成 ICP 备案
备案不是 GitHub Pages 备案(它也备不了),而是给你的域名备案。未备案的域名只能选"全球(不含中国大陆)",国内访问改善有限。
域名方案:两种路径怎么选
方案 A:GitHub Pages 绑定自定义域名(官方推荐)
在仓库 Settings → Pages → Custom domain 填写你的域名,勾选 Enforce HTTPS。
效果:
- ✅
你的域名正常访问,GitHub 自动签发 HTTPS 证书 - ❌
xxx.github.io会被强制重定向到你的域名,无法独立访问
适合:只需要一个访问入口,不 care github.io 是否存活。
方案 B:DNS CNAME 到 github.io,不在 GitHub 侧绑定
仓库 Pages 设置保持空白,不填自定义域名,不创建 CNAME 文件。只在 DNS 侧 把域名 CNAME 到 xxx.github.io。
效果:
- ✅
xxx.github.io原生访问保留,不跳转 - ✅
你的域名独立访问同一份内容 - ❌ GitHub 不会为你的自定义域名签发 HTTPS 证书——需要 CDN 层补齐
适合:想保留两个访问入口,CDN 层统一处理 HTTPS。
对比
| 维度 | 方案 A(GitHub 绑域名) | 方案 B(纯 DNS CNAME) |
|---|---|---|
| github.io 能否独立访问 | ❌ 强制跳转 | ✅ 独立共存 |
| HTTPS | GitHub 免费证书 | 需 CDN 层补齐 |
| CDN 兼容性 | 无影响 | 无影响 |
| 配置复杂度 | 低 | 低 |
二者都可以对接阿里云 CDN,差异只在 DNS 最后指向的是 GitHub 还是 CDN CNAME。
CDN 配置步骤
1. 开通 CDN 服务
阿里云控制台搜索"CDN" → 开通服务。新用户通常有 50GB/年免费流量,个人博客绰绰有余。
2. 添加加速域名
- 加速域名:填你的自定义域名(如
blog.nevergpdzy.cn) - 源站信息:
- 源站类型:源站域名
- 源站地址:
nevergpdzy.github.io - 端口:443(GitHub Pages 强制 HTTPS)
- 加速区域:
- 已备案:中国大陆
- 未备案:全球(不含中国大陆)
3. 配置回源 Host(关键)
进入 CDN 域名管理 → 回源配置 → 回源 Host:选择 源站域名。
这一步的作用:CDN 回源到 github.io 时,携带的 Host 请求头保持为 nevergpdzy.github.io 而非你的自定义域名。
GitHub Pages 需要用 Host 头来定位到具体是哪个用户的站点(同一组服务器托管了无数 xxx.github.io),所以回源 Host 必须正确指向你的 GitHub Pages 地址。但除此之外,GitHub 没有额外的 Host 黑名单或阻断逻辑——只要 Host 指向了一个真实存在的 Pages 站点,就能正常回源。这与百度等商业大站的多层 Host 封禁有本质区别。
4. 配置 HTTPS
在 CDN 控制台为你的域名配置 SSL 证书:
- 阿里云免费 DV 证书(在 SSL 证书控制台申请)
- 或 Let's Encrypt / 其他来源证书
开启强制 HTTPS(HTTP → HTTPS 自动跳转)。
5. DNS 解析(最后一步)
CDN 添加域名成功后会生成一个 CNAME 地址(类似 xxx.aliyuncdn.com)。
去你的域名 DNS 管理面板,添加记录:
- 主机记录:
blog(或你使用的子域名前缀) - 记录类型:CNAME
- 记录值:粘贴 CDN 提供的 CNAME 地址
等待解析生效(通常几分钟到几十分钟)。
6. 验证
- 用浏览器访问你的自定义域名,确认 HTTPS 正常、页面正常加载
- 检查响应头中是否有 CDN 相关标识
- 用不同网络环境测试访问速度
最终链路
用户
↓
你的域名(DNS 解析到阿里云 CDN CNAME)
↓
阿里云 CDN 边缘节点(有缓存则直接返回)
↓(缓存未命中,回源)
nevergpdzy.github.io:443(GitHub Pages)
↓
返回内容,CDN 按规则缓存
日常维护
- 内容更新后,在 CDN 控制台刷新缓存(或设置合理的缓存过期规则)
- 关注流量用量,超出免费额度后按量计费
- 如果 GitHub Pages IP 发生变化(罕见),一般不需要做任何操作,因为回源地址是域名而非 IP