跳至主要内容

管理 GitHub Pages 站点上的自定义域名

您可以设置或更新某些 DNS 记录和存储库设置,以将 GitHub Pages 站点的默认域名指向自定义域名。

谁可以使用此功能?

GitHub Pages 可用于包含 GitHub Free 和 GitHub Free for organizations 的公共存储库,以及包含 GitHub Pro、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server 的公共和私有存储库。有关详细信息,请参阅“GitHub 的计划”。

GitHub Pages 现在使用 GitHub Actions 执行 Jekyll 构建。当使用分支作为构建源时,如果要使用内置的 Jekyll 工作流,则必须在存储库中启用 GitHub Actions。或者,如果 GitHub Actions 不可用或已禁用,则将 .nojekyll 文件添加到源分支的根目录将绕过 Jekyll 构建过程并直接部署内容。有关启用 GitHub Actions 的更多信息,请参阅“管理存储库的 GitHub Actions 设置”。

平台导航

拥有存储库管理员权限的用户可以为 GitHub Pages 站点配置自定义域名。

关于自定义域名配置

提示

我们建议在将自定义域名添加到存储库之前先验证它,以提高安全性并避免接管攻击。有关详细信息,请参阅“验证 GitHub Pages 的自定义域名”。

在使用 DNS 提供商配置自定义域名之前,请确保已将自定义域名添加到 GitHub Pages 站点。在不将自定义域名添加到 GitHub 的情况下使用 DNS 提供商配置自定义域名可能会导致其他人能够在您的某个子域名上托管站点。

dig 命令(可用于验证 DNS 记录的正确配置)未包含在 Windows 中。要验证 DNS 记录是否配置正确,您可以使用 Resolve-DnsName PowerShell 命令或安装 BIND

注意

DNS 更改最多可能需要 24 小时才能传播。

配置顶层域名

要设置顶层域名(例如 example.com),您必须在存储库设置中配置自定义域名,以及使用 DNS 提供商配置至少一个 ALIASANAMEA 记录。

  1. 在 GitHub 上,导航到您站点的存储库。

  2. 在存储库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,单击** Pages**。

  4. 在“自定义域名”下,键入您的自定义域名,然后单击**保存**。如果您是从分支发布站点,这将创建一个提交,该提交会将 CNAME 文件直接添加到源分支的根目录。如果您使用自定义 GitHub Actions 工作流发布站点,则不会创建 CNAME 文件,因此您需要手动创建一个(其中仅包含一行包含自定义域名的文本)。有关发布源的更多信息,请参阅“配置 GitHub Pages 站点的发布源”。

  5. 导航到您的 DNS 提供商并创建 ALIASANAMEA 记录。您还可以创建 AAAA 记录以支持 IPv6。如果您正在实施 IPv6 支持,我们强烈建议除了 AAAA 记录外,还使用 A 记录,因为全球 IPv6 的采用速度较慢。有关如何创建正确记录的更多信息,请参阅 DNS 提供商的文档。

    • 要创建 ALIASANAME 记录,请将您的顶层域名指向站点的默认域名。有关站点默认域名的更多信息,请参阅“关于 GitHub Pages”。

    • 要创建 A 记录,请将您的顶层域名指向 GitHub Pages 的 IP 地址。

      185.199.108.153
      185.199.109.153
      185.199.110.153
      185.199.111.153
      
    • 要创建 AAAA 记录,请将您的顶层域名指向 GitHub Pages 的 IP 地址。

      2606:50c0:8000::153
      2606:50c0:8001::153
      2606:50c0:8002::153
      2606:50c0:8003::153
      

    警告

    我们强烈建议您不要使用通配符 DNS 记录,例如 *.example.com。即使您验证了域名,这些记录也会使您面临域名接管的直接风险。例如,如果您验证了 example.com,这会阻止其他人使用 a.example.com,但他们仍然可以接管 b.a.example.com(该域名受通配符 DNS 记录涵盖)。有关详细信息,请参阅“验证 GitHub Pages 的自定义域名”。

  6. 打开 终端终端Git Bash

  7. 要确认 DNS 记录是否配置正确,请使用 dig 命令,将 EXAMPLE.COM 替换为您自己的顶层域名。确认结果与上面 GitHub Pages 的 IP 地址匹配。

    • 对于 A 记录

      $ dig EXAMPLE.COM +noall +answer -t A
      > EXAMPLE.COM    3600    IN A     185.199.108.153
      > EXAMPLE.COM    3600    IN A     185.199.109.153
      > EXAMPLE.COM    3600    IN A     185.199.110.153
      > EXAMPLE.COM    3600    IN A     185.199.111.153
      
    • 对于 AAAA 记录

      $ dig EXAMPLE.COM +noall +answer -t AAAA
      > EXAMPLE.COM     3600    IN AAAA     2606:50c0:8000::153
      > EXAMPLE.COM     3600    IN AAAA     2606:50c0:8001::153
      > EXAMPLE.COM     3600    IN AAAA     2606:50c0:8002::153
      > EXAMPLE.COM     3600    IN AAAA     2606:50c0:8003::153
      

      请记住还要检查您的 A 记录。

  8. 如果您使用静态站点生成器在本地构建站点并将生成的文件夹推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地存储库。有关详细信息,请参阅“排查自定义域名和 GitHub Pages 问题”。

  9. 可选:要为您的站点强制实施 HTTPS 加密,请选择**强制使用 HTTPS**。此选项最多可能需要 24 小时才能可用。有关详细信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。

配置顶层域名和 www 子域名变体

注意

建议为 HTTPS 保护的网站设置 www 子域名。

如果您使用顶层域名作为自定义域名,我们建议您也设置 www 子域名。如果您通过 DNS 提供商为每种域名类型配置了正确的记录,则 GitHub Pages 将自动在这些域名之间创建重定向。例如,如果您将 www.example.com 配置为站点的自定义域名,并且您已为顶层域名和 www 域名设置了 GitHub Pages DNS 记录,则 example.com 将重定向到 www.example.com。请注意,自动重定向仅适用于 www 子域名。自动重定向不适用于任何其他子域名,例如 blog。有关详细信息,请参阅“配置子域名”。

访问您的 DNS 提供商,并为指向 GitHub Pages 默认域名的 www 子域名创建 CNAME 记录。例如,如果您的站点位于 <user>.github.io,则应创建一个将 www.example.com 指向 <user>.github.ioCNAME 记录。类似地,对于位于 <organization>.github.io 的组织站点,您应创建一个将 www.example.com 指向 <organization>.github.ioCNAME 记录。请确保 CNAME 记录直接指向 <user>.github.io<organization>.github.io,不包含存储库名称。

有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商的文档。有关站点默认域名的更多信息,请参阅“关于 GitHub Pages”。

配置子域名

要设置 www 或自定义子域名(例如 www.example.comblog.example.com),您必须在存储库设置中添加您的域名。之后,使用您的 DNS 提供商配置 CNAME 记录。

  1. 在 GitHub 上,导航到您站点的存储库。

  2. 在存储库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,单击** Pages**。

  4. 在“自定义域名”下,键入您的自定义域名,然后单击**保存**。如果您是从分支发布站点,这将创建一个提交,该提交会将 CNAME 文件直接添加到源分支的根目录。如果您使用自定义 GitHub Actions 工作流发布站点,则不会创建 CNAME 文件,因此您需要手动创建一个(其中仅包含一行包含自定义域名的文本)。有关发布源的更多信息,请参阅“配置 GitHub Pages 站点的发布源”。

    注意

    如果您的自定义域名是国际化域名,则必须输入其 Punycode 编码版本。

    有关 Punycode 的更多信息,请参阅 国际化域名

  5. 访问您的 DNS 提供商,并创建一个将您的子域名指向站点默认域名的 CNAME 记录。例如,如果您想为用户站点使用子域名 www.example.com,请创建一个将 www.example.com 指向 <user>.github.ioCNAME 记录。如果您想为组织站点使用子域名 another.example.com,请创建一个将 another.example.com 指向 <organization>.github.ioCNAME 记录。CNAME 记录应始终指向 <user>.github.io<organization>.github.io,不包括存储库名称。有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商的文档。有关站点默认域名的更多信息,请参阅“关于 GitHub Pages”。

    警告

    我们强烈建议您不要使用通配符 DNS 记录,例如 *.example.com。即使您验证了域名,这些记录也会使您面临域名接管的直接风险。例如,如果您验证了 example.com,这会阻止其他人使用 a.example.com,但他们仍然可以接管 b.a.example.com(该域名受通配符 DNS 记录涵盖)。有关详细信息,请参阅“验证 GitHub Pages 的自定义域名”。

  6. 打开 终端终端Git Bash

  7. 要确认您的 DNS 记录是否配置正确,请使用 dig 命令,将 WWW.EXAMPLE.COM 替换为您自己的子域名。

    $ dig WWW.EXAMPLE.COM +nostats +nocomments +nocmd
    > ;WWW.EXAMPLE.COM.                    IN      A
    > WWW.EXAMPLE.COM.             3592    IN      CNAME   YOUR-USERNAME.github.io.
    > YOUR-USERNAME.github.io.      43192   IN      CNAME   GITHUB-PAGES-SERVER .
    > GITHUB-PAGES-SERVER .         22      IN      A       192.0.2.1
    
  8. 如果您使用静态站点生成器在本地构建站点并将生成的文件夹推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地存储库。有关详细信息,请参阅“排查自定义域名和 GitHub Pages 问题”。

  9. 可选:要为您的站点强制实施 HTTPS 加密,请选择**强制使用 HTTPS**。此选项最多可能需要 24 小时才能可用。有关详细信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。

    注意

    如果您将自定义子域名指向您的根域名,则会遇到强制网站 HTTPS 出现问题,并且您可能会遇到子域名根本无法访问您的 GitHub Pages 站点的问题。

自定义域名的 DNS 记录

如果您熟悉为 GitHub Pages 站点配置域名的过程,则可以使用下表查找特定方案的 DNS 值以及您的 DNS 提供商支持的 DNS 记录类型。有关更多信息,包括如何在 GitHub 上配置您的 GitHub Pages 站点以及如何使用 dig 命令验证配置,请参阅以上各节。

要配置根域名,您只需从下表中选择一种 DNS 记录类型即可。要配置根域名和 www 子域名(例如 example.comwww.example.com),请先配置根域名,然后再配置子域名。有关更多信息,请参阅“配置根域名和 www 子域名变体”。

警告

我们强烈建议您不要使用通配符 DNS 记录,例如 *.example.com。即使您验证了域名,这些记录也会使您面临域名接管的直接风险。例如,如果您验证了 example.com,这会阻止其他人使用 a.example.com,但他们仍然可以接管 b.a.example.com(该域名受通配符 DNS 记录涵盖)。有关详细信息,请参阅“验证 GitHub Pages 的自定义域名”。

场景DNS 记录类型DNS 记录名称DNS 记录值
根域名
(example.com)
A@185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
根域名
(example.com)
AAAA@2606:50c0:8000::153
2606:50c0:8001::153
2606:50c0:8002::153
2606:50c0:8003::153
根域名
(example.com)
ALIASANAME@USERNAME.github.io
ORGANIZATION.github.io
子域名
(ww​w.example.com
blog.example.com)
CNAMESUBDOMAIN.example.com.USERNAME.github.io
ORGANIZATION.github.io

删除自定义域名

如果您收到有关自定义域名已被占用的错误,则可能需要从另一个存储库中删除该自定义域名。

  1. 在 GitHub 上,导航到您站点的存储库。

  2. 在存储库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,单击** Pages**。

  4. 在“自定义域名”下,单击**移除**。

    Screenshot of a settings box to save or remove a custom domain on GitHub Pages . To the right of a text box reading "example.com" is a button labeled "Remove" in red type.

保护您的自定义域名

如果您的 GitHub Pages 站点已禁用但已设置自定义域名,则该站点有被接管的风险。在您的站点禁用时,如果您的 DNS 提供商已配置自定义域名,则可能会导致其他人托管您某个子域名上的站点。

验证您的自定义域名可防止其他 GitHub 用户将其存储库与您的域名一起使用。如果您的域名未经验证且您的 GitHub Pages 站点已禁用,则应立即更新或删除您与 DNS 提供商的 DNS 记录。有关更多信息,请参阅“验证您的 GitHub Pages 自定义域名”。

进一步阅读