Github Page使用托管在CF上的域名
配置
- Cloudflare 上:
chenshan.link
是A
记录,指向 GitHub Pages 的 IP 地址。www.chenshan.link
是CNAME
,指向chenshan.link
。
- GitHub 仓库中的
CNAME
文件:内容为chenshan.link
用户访问 chenshan.link
时:
- 浏览器通过 DNS 直接解析到 GitHub Pages 的 IP 地址。
- 浏览器向 GitHub Pages 服务器发起请求,
Host
头为chenshan.link
。 - GitHub Pages 发现:
CNAME
文件中声明的域名正是chenshan.link
。- 正常返回网站内容。
用户访问 www.chenshan.link
时:
- 浏览器通过 DNS 解析
www.chenshan.link
- Cloudflare 的 DNS 返回
CNAME
指向chenshan.link
。 - 接着,解析
chenshan.link
,返回 GitHub Pages 的 IP 地址。
- Cloudflare 的 DNS 返回
- 浏览器向 GitHub Pages 服务器发起请求,
Host
头为www.chenshan.link
。 - GitHub Pages 发现:
CNAME
文件中声明的域名是chenshan.link
。- 返回一个 HTTP 301 永久重定向,将用户引导到
https://chenshan.link
。
- 浏览器重定向到主域名:
- 浏览器跳转到
https://chenshan.link
。 - 再次向 GitHub Pages 服务器发送请求,
Host
值为chenshan.link
- 返回网站内容:
- GitHub Pages 返回你的网站内容,用户看到的是
chenshan.link
的页面。
- GitHub Pages 返回你的网站内容,用户看到的是
- Github Page服务器会验证Host的值来返回正确的资源,因此仓库中的CNAME文件时必须的。我使用hexo生成静态文件并推送,这会覆盖掉在Github上生成的CNAME,因此在本地的
source
文件中添加CNAME
文件并在 _config.yml
的inlude
项下添加-CNAME
- 如果你配置一个顶端域名(例如 chenshan.link )和一个匹配的 www 子域名(例如 www.chenshan.link ),GitHub Page服务器会自动地创建双重定向。 例如: 如果你的 CNAME 文件包含 chenshan.link,那么 www.chenshan.link 会定向到 chenshan.link。 如果你的 CNAME 文件包含 www.chenshan.link ,那么 chenshan.link 会定向到 www.chenshan.link 。这种自动定向只限于www,例如你在DNS配置blog的CNAME为chenshan.link,仍然无法通过blog.chenshan.link来访问博客。
- 标题: Github Page使用托管在CF上的域名
- 作者: chenshan
- 创建于 : 2024-11-30 17:56:51
- 更新于 : 2024-12-05 22:29:56
- 链接: https://chenshan.link/2024/11/30/CF托管域名/
- 版权声明: 版权所有 © chenshan,禁止转载。
评论