为什么 github 页面存储库中需要 CNAME 文件,即使我在 DNS 提供商处有 CNAME 记录?
Why is CNAME file needed in github pages repository even I have the CNAME record at DNS provider?
我很困惑为什么我的 github 页面存储库中也需要 CNAME 文件?为什么 CNAME 需要在我的域提供商和 github 页面上完成两次?
这些东西如何协同工作?
当一个 http 请求进来时,说这个请求是针对 mygithub.mypage.com
,github 必须知道这个请求是代表谁的,所以它必须传递给谁的页面。
这就是 github 处的设置。
准确的说,github的服务器看到的是一个类似
的http请求
GET / HTTP/1.1
Hostname: mygithub.mypage.com
没有关于mypage.github.io
的概念。他们可以进行 DNS 查询以找出 mygithub.mypage.com
指向的位置,但他们选择使用此版本。
我做了进一步的思考,我认为 glglgl 的回答没有回答我的问题。因为在我的域提供商中:我添加了这样的 CNAME 记录:
当请求到达 github 时,github 应该有足够的信息知道要传送哪个用户的 github 页面,对吗?很明显请求是获取 xxuser 的 github 页面。
那为什么 github 页面需要一个额外的 CNAME 文件?我认为,原因在于它赋予了存储库所有者控制允许 link 访问存储库网站的自定义域的权力。如果不在 CNAME 文件 link 中的自定义域到 github 页面,github 将显示 404 错误页面。这意味着只能 linked 所有者放入 CNAME 文件的自定义域,这显然是存储库所有者拥有的域。
我很困惑为什么我的 github 页面存储库中也需要 CNAME 文件?为什么 CNAME 需要在我的域提供商和 github 页面上完成两次?
这些东西如何协同工作?
当一个 http 请求进来时,说这个请求是针对 mygithub.mypage.com
,github 必须知道这个请求是代表谁的,所以它必须传递给谁的页面。
这就是 github 处的设置。
准确的说,github的服务器看到的是一个类似
的http请求GET / HTTP/1.1
Hostname: mygithub.mypage.com
没有关于mypage.github.io
的概念。他们可以进行 DNS 查询以找出 mygithub.mypage.com
指向的位置,但他们选择使用此版本。
我做了进一步的思考,我认为 glglgl 的回答没有回答我的问题。因为在我的域提供商中:我添加了这样的 CNAME 记录:
当请求到达 github 时,github 应该有足够的信息知道要传送哪个用户的 github 页面,对吗?很明显请求是获取 xxuser 的 github 页面。
那为什么 github 页面需要一个额外的 CNAME 文件?我认为,原因在于它赋予了存储库所有者控制允许 link 访问存储库网站的自定义域的权力。如果不在 CNAME 文件 link 中的自定义域到 github 页面,github 将显示 404 错误页面。这意味着只能 linked 所有者放入 CNAME 文件的自定义域,这显然是存储库所有者拥有的域。