AWS Route 53 域指向 Github 页面

Posted

技术标签:

【中文标题】AWS Route 53 域指向 Github 页面【英文标题】:AWS Route 53 Domain Point To Github Pages 【发布时间】:2021-12-31 01:55:10 【问题描述】:

我是使用 AWS 和 route 53 的新手,因此感谢您提供任何帮助。

我在 GitHub 上创建了一个组织,然后为静态站点创建了一个简单的存储库,以便与 Github 页面一起显示。这按预期工作,我可以在 Github 生成的 URL 上看到静态站点(类似于:https://<githubOrgName>.github.io/<repoName>/

我从 AWS 获得了一个域,现在我正在尝试设置它,以便***域(例如“my-domain.com”)指向 Github 页面站点。

我按照以下位置的说明进行操作:https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages ...但它似乎不起作用。

我正在尝试使顶点域指向存储库 Github 页面。类似:

https://my-domain.com -> https://<githubOrgName>.github.io/<repoName>/

...但这仅在我转到根域(“my-domain.com”)时显示空白屏幕。我也试过去https://my-domain.com/<repoName>/...但这向我展示了一个Github 404页面(所以它似乎正确地将某些东西转发到Github):

我的 AWS 路由 53 配置类似于以下内容(我已尝试删除敏感细节):

谁能向我解释我做错了什么?我是使用域的新手,因此不胜感激。

【问题讨论】:

【参考方案1】:

单独使用 Route53 对你没有帮助,因为你的目标 URL 包含一个 URL 路径,即/<repoName>/

DNS 是一个名称解析系统,对 HTTP 一无所知

此外,源服务器 (github.io) 可能正在运行可能正在解析请求标头的反向代理,其中包括 Host 标头。您的浏览器会自动将此标头设置为您提供给它的 url。最终,您向其发送了错误的标头(即https://my-domain.com/),Github 无法处理。您可以将此标头(例如通过curl)显式设置为 Github 所期望的,但我相信这不是您和您的用户想要的。

相反,您可以尝试在 Lambda@Edge(由 AWS CloudFront 提供)的帮助下使用第 7 层重定向 (301/302)。我使用无服务器框架创建了一个简单的solution,它执行以下重定向:

https://maslick.tech     ->  https://github.com/maslick
https://maslick.tech/cv  ->  https://www.linkedin.com/in/maslick/
https://maslick.tech/qa  ->  https://***.com/users/2996867/maslick
https://maslick.tech/ig  ->  https://www.instagram.com/maslick/

但是你可以根据自己的需要通过调整handler.js来自定义。您可能还需要在 us-east-1 区域中使用 AWS Certificate Manager 创建一个免费的 TLS 证书,并将其附加到您的 CloudFront 分配中。但这是可选的。

Lambda@Edge 将提供低延迟,因为您的重定向将从 CloudFront 的全球边缘站点提供。

【讨论】:

以上是关于AWS Route 53 域指向 Github 页面的主要内容,如果未能解决你的问题,请参考以下文章

Route53 中的域将根指向外部主机,在 AWS 中保留子域

AWS Route53 指向弹性 beanstalk webapp

域转移后 AWS Route 53 上的域传播错误

将 Route53 的域指向 VULTR 的主机

SSL 不适用于 AWS 上的 Route 53 域

尝试创建 aws_route53_record 以指向负载均衡器,但使用 terraform 不断出现错误