Post

Custom Domain with Alibaba Cloud CDN

Custom Domain with Alibaba Cloud CDN

1.绕开限制

基于某些客观原因, 发现连通性很差. 所以用 阿里云 CDN + GitHub Pages + 自定义域名绑定 的方式解决

以下是找GPT生成的操作流程, 配上自己的过程图.

✅ 步骤 1:设置 GitHub Pages 自定义域名

  1. 打开你的 GitHub 项目(例如:yourusername.github.io
  2. 进入 Settings > Pages
  3. Custom domain 栏里填上你的域名(如:www.yourdomain.com
  4. GitHub 会自动在仓库根目录生成一个 CNAME 文件,内容为你的域名
  5. ⚠️ 等 GitHub 部署完成(可能需要几分钟)

PS:其实这里我没细看, 先做后面.这里因为没有配置dns和cdn, 一定会报错


✅ 步骤 2:开通阿里云 CDN 并绑定域名

  1. 打开 阿里云 CDN 控制台
  2. 点击「添加域名」
    • 加速域名填写你的域名,例如 www.yourdomain.com
      • ==请注意, 这里会让你在刚才DNS加一个TXT类型, 可以点击帮助文档, 写的很详细==
    • 加速类型:选择「图片小文件」
    • 源站类型:选择「域名」
    • 源站地址:填写 yourusername.github.io
    • 回源协议:端口443
  3. 添加成功后,阿里云会提示你将 CNAME 指向一个 CDN 域名(例如 xxx.aliyuncdn.com

✅ 步骤 3:修改 DNS,把域名 CNAME 指向阿里云 CDN

去阿里云 DNS 解析控制台:

  • 修改或新增一条 CNAME 记录:
类型 主机记录 记录值
CNAME www xxx.aliyuncdn.com (阿里云提供的 CDN CNAME 地址)

等待解析生效(通常几分钟)


✅ 步骤 4:开启 HTTPS

在阿里云 CDN 控制台:

  1. 找到你绑定的域名,点击进入配置
  2. 选择「证书管理」或「HTTPS 配置」
  3. 如果你没有证书,可以选择申请免费的 阿里云托管证书
  4. 填写域名等信息后,自动生成并配置 HTTPS
  5. 回到CDN控制台进行配置

✅ 完成!

此时你访问 https://www.yourdomain.com,就会通过阿里云 CDN 加速访问你的 GitHub Pages 页面,且完全不再受 github.io 屏蔽的影响了 🎉

2.常见问题

2.1.DNS Check需要github.io作为CNAME

如果用了这个为CNAME, 就没有用到CDN, 那么这个配置照样无法顺畅访问

2.2.默认页面index.html

当你配置完, 直接访问首页, 发现内容是

是没有渲染的md文档, 而其他文件可以正常访问.

GPT解答如下:

🎯 问题本质:阿里云 CDN 回源首页时,返回的是源代码,而不是构建后的 index.html

也就是:

  • 你访问 https://www.wuzhixiaojiu.com/
    • CDN 去回源 cryanskl.github.io/
    • 但可能错误地取到了仓库的 index.md 源文件
    • 而不是真正构建生成的 index.html

所以你看到的就变成了原始 Markdown 文件内容,而非渲染结果。


✅ 为什么其他页面可以正常访问?

因为 GitHub Pages 生成后的页面路径是:

  • index.html ← 首页
  • /about/about/index.html
  • /posts/foo/posts/foo/index.html

这些路径在 CDN 中不会冲突到 Markdown 文件名,而首页 / 很容易被 CDN 错误映射到 index.md(而不是 index.html),尤其是在“回源 Host 头”没设置正确时

解决方案

在根目录 index.html 里加上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
---
layout: home
permalink: /
---

<script>
  (function() {
    const isLocalhost = window.location.hostname === 'localhost' || 
                        window.location.hostname === '127.0.0.1' || 
                        window.location.hostname.startsWith('192.168.') || 
                        window.location.protocol === 'file:';

    const isRootPath = window.location.pathname === '/' || window.location.pathname === '/index.html';

    if (!isLocalhost && isRootPath) {
      window.location.href = '/index.html';
    }
  })();
</script>

<noscript>
  如果没有跳转请点击 <a href="/index.html">这里</a>
</noscript>

This post is licensed under CC BY 4.0 by the author.

© cryanskl. Some rights reserved.

本页浏览 2476 次 | 总访问量 13481

Using the Chirpy theme for Jekyll.