GitHub项目页面的自定义域

ryn*_*nop 411 dns github

gh-pageshttp://github.com的一个回购中有一个分支.如果我访问http://myuser.github.com/myrepo,GitHub项目页面可以正常工作

我想设置一个自定义域(myexample.com)来提供这个项目页面.我想要两个 myexample.comwww.myexample.com提供这些项目页面.

GitHub页面帮助说您在DNS中创建A记录和CNAME记录.A记录是有道理的,但我不知道在我的DNS中要做什么CNAME记录.

gh-pages文件说做一个CNAME对"charlie.github.com",这是一个用户页面资料库记录.我没有用户页面资料库-我只有一个项目库和一个gh-pages分支,我想用的myexample.comwww.myexample.com.

我是否需要创建用户页面存储库,以便我可以将我的项目页面用于www.myexample.com和myexample.com?

我会尝试一下,但我想确保它能够正常工作,因为我已经有www.myexample.com直播并且不想犯错误.

我通过电子邮件发送了GitHub支持,他们的回复是

据我所知,你不能指向同一个gh页面.

我发现很难相信他们只支持项目页面的A记录.

有没有人成功地做过这件事?

ryn*_*nop 490

1/23/19更新:

自从我上次回答以来,情况发生了很大变化(为了更好).此更新的答案将告诉您如何配置:

  1. 根尖(example.com)
  2. 子域名(www.example.com)
  3. HTTPS(可选但强烈鼓励)

最后,所有请求example.com将被重定向到https://www.example.com(如果您选择不使用HTTPS,则为http://).我总是用www我的最后着陆.为什么(1,2),是另一个讨论.

这个答案很长,但并不复杂.由于关于这个主题的GitHub文档不清楚或不是线性的,因此我很清楚.

步骤1:在GitHub设置中启用GitHub页面

  1. 从您的回购中,单击 标签
  2. 向下滚动到该GitHub Pages部分.您有两种选择:
  3. 选择master branch/README.md视为您的网络index.html.选择master branch /docs folder/docs/README.md视为您的网络index.html.
  4. 选择一个主题.
  5. 在GitHub发布您的网站时等一下.单击旁边的链接验证它是否有效Your site is ready to be published at

第2步:在GitHub设置中指定自定义域

在此处输入您的自定义域名,然后点击save:

这是一个微妙但重要的步骤.

  • 如果您添加到GitHub页面站点的自定义域是example.com,www.example.com则将重定向到example.com
  • 如果您添加到GitHub页面站点的自定义域是www.example.com,example.com则将重定向到www.example.com.

如前所述,我建议总是登陆,www所以我输入www.example.com如上图所示.

第3步:创建DNS条目

在DNS提供商的Web控制台中,创建四个A记录和一个记录CNAME.

  1. A记录@(又名根尖):

某些DNS提供商会让您指定@,其他DNS (如AWS Route35)您将保留子域空白以指示@.在任何一种情况下,这些都是A要创建的记录:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Run Code Online (Sandbox Code Playgroud)
  1. 创建一条CNAME记录以指向www.example.com YOUR-GITHUB-USERNAME.github.io.

这是最令人困惑的部分.

注意YOUR-GITHUB-USERNAME 不是 GitHub回购名称!值由此图表YOUR-GITHUB-USERNAME确定.

对于用户页面网站(很可能是您的网站),CNAME输入将是username.github.io,例如:

对于组织页面站点,CNAME输入将是orgname.github.io,例如:

第5步:确认DNS条目

  1. A通过运行确认您的记录dig +noall +answer example.com.它应该返回185.x.x.x您输入的四个IP地址.

  2. CNAME通过运行确认您的记录dig www.example.com +nostats +nocomments +nocmd.它应该返回一个CNAME YOUR-GITHUB-USERNAME.github.io

这些DNS条目可能需要一个小时左右才能解析/传播.一旦他们这样做,打开你的浏览器http://example.com,它应该重新指向http://www.example.com

第6步:SSL(HTTPS)配置.可选,但强烈推荐

使自定义域工作后,返回到repo设置.如果您已经打开了设置页面,请刷新页面.

如果Enforce HTTPS复选框下面有一条消息,说明它仍在处理,则需要等待.您可能还需要点击saveCustom domain部分中的按钮以启动Enforce HTTPS处理.

处理完成后,它应如下所示:

在此输入图像描述

只需单击Enforce HTTPS复选框,然后将浏览器指向https://example.com.它应该重新指导和开放https://www.example.com

而已!

GitHub将自动使您的HTTPS证书保持最新状态,并应处理www通过HTTPS重定向的顶点.

希望这可以帮助!!

...

旧(在1/23/19之前)回答

所以我明白了.詹姆斯麦克劳林给了我需要的轻推.

要为处理www.yourdomain.com和yourdomain.com的gh-pages Project Pages仓库设置自定义域(假设您的仓库中已经有gh-pages分支):

  1. 从您的项目仓库,gh-pages分支.使用内容创建CNAME文件yourdomain.com.承诺再推.
  2. 在DNS管理器中,设置两条cname记录.一个用于根尖(@),另一个用于www.两者都指向YOURusername.github.io.如果您的DNS提供商不支持ALIAS根apex(@)上的A记录,只需创建指向192.30.252.153和的记录192.30.252.154
  3. 等到名称服务器更新:

    dig yourdomain.com +nostats +nocomments +nocmd

  • 检查2014年6月6日和github文档说:创建指向以下IP地址的DNS A记录:192.30.252.153,192.30.252.154. (31认同)
  • 截至2012年4月19日,[GitHub的文档](http://help.github.com/pages/)使用"204.232.175.78"作为IP地址. (14认同)
  • 我不认为可以从naked @ domain设置CNAME记录.这就是为什么你需要A记录来处理从裸域重定向到www子域的原因.这是任何cloudhost的问题.不保证固定IP. (11认同)
  • "如果您使用的A记录指向207.97.227.245或204.232.175.78,则需要更新DNS设置,因为我们不再直接从这些服务器提供Pages." https://help.github.com/articles/my-custom-domain-isn-t-working - 3/8/14 (2认同)
  • @rynop GoDaddy不允许@和www到yourusername.github.io,每个子域只有一个CNAME记录:( (2认同)
  • 对于Namecheap域用户,要设置一个顶点域名,[在"所有主机记录"中执行此操作.](https://i.imgur.com/hp3S6Hn.png) (2认同)

sup*_*ary 239

概观

文档是有点混乱,当涉及到项目页面,而不是用户页面.感觉你应该做更多,但实际上这个过程非常简单.

它涉及:

  1. 为裸(无www)域设置2个静态A记录.
  2. 为www创建一个CNAME记录,该记录将指向GitHub URL.这将为您处理www重定向.
  3. 在gh-pages分支上的项目根目录中创建一个名为CNAME(大写)的文件.这将告诉Github要响应的URL.
  4. 等待一切传播.

你会得到什么

您的内容将通过http://nicholasjohnson.com表格的网址提供.

访问http://www.nicholasjohnson.com将返回301重定向到裸域.

重定向将遵循该路径,因此http://www.nicholasjohnson.com/angular的流量将重定向到http://nicholasjohnson.com/angular.

每个存储库可以有一个项目页面,因此如果您的存储库已打开,您可以拥有任意数量的存储库.

这是过程:

1.创建A记录

对于A记录,将@指向以下ip地址:

@: 185.199.108.153
@: 185.199.109.153
@: 185.199.110.153
@: 185.199.111.153
Run Code Online (Sandbox Code Playgroud)

这些是您的内容将从中提供的静态Github IP地址.

2.创建CNAME记录

对于CNAME记录,请将www指向yourusername.github.io.请注意尾随句号.另请注意,这是用户名,而不是项目名称.您还不需要指定项目名称.Github将使用CNAME 文件来确定从哪个项目提供内容.

例如

www: forwardadvance.github.io.
Run Code Online (Sandbox Code Playgroud)

CNAME的目的是将所有www子域流量重定向到GitHub页面,该页面将重定向到裸域.

这是我用于自己网站http://nicholasjohnson.com的配置的屏幕截图:

Github静态页面所需的A和CNAME记录

3.创建CNAME文件

将名为CNAME的文件添加到gh-pages分支中的项目根目录.这应该包含您要提供的域.确保你提交并推送.

例如

nicholasjohnson.com
Run Code Online (Sandbox Code Playgroud)

此文件告诉GitHub使用此repo来处理此域的流量.

等等

现在等待5分钟,您的项目页面现在应该是实时的.

  • @superluminary,我重复你的过程,我有两个问题,1)我正在使用freeDNS fear.org进行DNS共享,这不允许添加尾随.在username.github.io .. 2)当我添加github.io网址而没有尾随.,mydomain.com正在工作,但我无法访问www.mydomain.com ?? (4认同)
  • 我无法通过GitHub文档找出的部分是用于项目的URL.感谢您的回答:"这是用户名,而不是项目名称." 所以使用`yourUserName.github.io (4认同)

Phi*_*hil 21

如果您想知道如何让您的域名显示为www.mydomain.com而不是重定向www请求 mydomain.com,请尝试以下操作:

gh-pages分支上的CNAME文件将有一行:

www.mydomain.com(而不是mydomain.com)

无论您对重定向的偏好(换句话说,无论您在gs-pages分支上的CNAME文件中是什么),使用您的DNS提供程序,都应该像这样设置:

A      @    192.30.252.154
A      @    192.30.252.153
CNAME  www  username.github.io
Run Code Online (Sandbox Code Playgroud)


Jim*_*ski 15

简短的回答

这些详细的解释很好,但OP的(和我的)混淆可以用一句话来解决:"直接DNS到您的GitHub 用户名组织,忽略特定的项目,并在您的项目存储库中添加适当的CNAME 文件:GitHub将发送基于存储库文件的正确项目的正确DNS . "

  • 我不知道“发送 DNS”是什么意思。 (2认同)

Ami*_*mio 13

截至2013年8月29日,Github的文档声称:

警告:项目页面子路径(如http://username.github.io/projectname)不会重定向到项目的自定义域.

  • 我也对此感到困惑.正如我现在所理解的那样,你仍然可以将yoursite.com指向github页面,但是你的用户名.github.io/yoursite将不会重定向到yoursite.com.这很好,因为yoursite.com仍然可以工作,只需确保更新您的DNS记录并等待解决.https://help.github.com/articles/setting-up-a-custom-domain-with-pages#apex-domains (9认同)
  • 我很困惑为什么他们添加了这种行为.我希望我的.com指向github页面,而不是相反. (3认同)