Skip to main content

管理 GitHub Pages 站点的自定义域

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

GitHub Pages 适用于具有 GitHub Free 和组织的 GitHub Free 的公共仓库,以及具有 GitHub Pro、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server 的公共和私有仓库。 有关详细信息,请参阅“GitHub 的产品”。

拥有仓库管理员权限的人可为 GitHub Pages 站点配置自定义域。

关于自定义域配置

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

dig 命令可用于验证 DNS 记录的配置是否正确,它未包含在 Windows 中。 必须安装 BIND 才能验证 DNS 记录是否配置正确。

注意:传播 DNS 更改可能需要长达 24 小时的时间。

配置子域

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

  1. 在 GitHub 上,导航到站点的仓库。 1. 在存储库名称下,单击 “设置”。 “存储库设置”按钮

  2. 在边栏的“代码和自动化”部分,单击“ 页面”。

  3. 在“自定义域”下,键入自定义域,然后单击“保存”。 如果从分支发布站点,将会创建一个提交,将 CNAME 文件添加到源分支的根目录。 如果使用自定义 GitHub Actions 工作流发布站点,则不会创建 CNAME 文件。 有关发布源的详细信息,请参阅“为 GitHub Pages 站点配置发布源”。 “保存自定义域”按钮

    注意:如果自定义域是国际化域名,则必须输入 Punycode 编码版本。

    有关 Punycodes 的详细信息,请参阅国际化域名

  4. 导航到 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。 通配符 DNS 记录将允许任何人在你的其中一个子域上托管 GitHub Pages 站点,即使这些子域会进行验证也是如此。 有关详细信息,请参阅“验证 GitHub Pages 的自定义域”。

    1. 打开终端终端Git Bash
  5. 要确认 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
  6. 如果你使用静态站点生成器在本地构建站点并将生成的文件推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地存储库。 有关详细信息,请参阅“排查自定义域和 GitHub Pages 的问题”。 1. (可选)若要为站点强制实施 HTTPS 加密,请选择“强制实施 HTTPS”。 可能要过 24 小时才能使用此选项。 有关详细信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。 对自定义域名强制使用 HTTPS 选项

配置 apex 域

要设置顶点域(例如 example.com),必须在存储库设置中配置自定义域,并使用 DNS 提供程序配置至少一个 ALIASANAMEA 记录。

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

  1. 在 GitHub 上,导航到站点的仓库。 1. 在存储库名称下,单击 “设置”。 “存储库设置”按钮

  2. 在边栏的“代码和自动化”部分,单击“ 页面”。

  3. 在“自定义域”下,键入自定义域,然后单击“保存”。 如果从分支发布站点,将会创建一个提交,将 CNAME 文件添加到源分支的根目录。 如果使用自定义 GitHub Actions 工作流发布站点,则不会创建 CNAME 文件。 有关发布源的详细信息,请参阅“为 GitHub Pages 站点配置发布源”。 “保存自定义域”按钮

  4. 导航到 DNS 提供程序并创建一条 ALIASANAMEA 记录。 还可以为 IPv6 支持创建 AAAA 记录。 有关如何创建正确记录的更多信息,请参阅 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。 通配符 DNS 记录将允许任何人在你的其中一个子域上托管 GitHub Pages 站点,即使这些子域会进行验证也是如此。 有关详细信息,请参阅“验证 GitHub Pages 的自定义域”。

    1. 打开终端终端Git Bash
  5. 要确认 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
  6. 如果你使用静态站点生成器在本地构建站点并将生成的文件推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地存储库。 有关详细信息,请参阅“排查自定义域和 GitHub Pages 的问题”。 1. (可选)若要为站点强制实施 HTTPS 加密,请选择“强制实施 HTTPS”。 可能要过 24 小时才能使用此选项。 有关详细信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。 对自定义域名强制使用 HTTPS 选项

配置顶点域和 www 子域变体

使用顶点域时,建议配置 GitHub Pages 站点,以便在顶点域和该域的 www 子域变体中托管内容。

要与顶点域一起设置 www 子域,必须先使用 DNS 提供程序创建 ALIASANAMEA 记录来配置顶点域。 有关详细信息,请参阅配置顶点域

配置 apex 域后,您必须通过 DNS 提供商配置 CNAME 记录。

  1. 导航到 DNS 提供程序并创建 CNAME 记录,使其将 www.example.com 指向站点 <user>.github.io<organization>.github.io 的默认域。 不要包括仓库名称。 有关如何创建正确记录的更多信息,请参阅 DNS 提供程序的文档。 有关站点默认域的更多信息,请参阅“关于 GitHub Pages”。
  2. 要确认 DNS 记录配置正确,请使用 dig 命令,将 www 替换为子域变体。
    $ 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

删除自定义域

  1. 在 GitHub 上,导航到站点的仓库。 1. 在存储库名称下,单击 “设置”。 “存储库设置”按钮

  2. 在边栏的“代码和自动化”部分,单击“ 页面”。

  3. 在“自定义域”下,单击“删除”。 “保存自定义域”按钮

保护自定义域

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

验证自定义域可防止其他 GitHub 用户将你的域用于他们的存储库。 如果你的域未经过验证,并且 GitHub Pages 站点已禁用,则应立即通过 DNS 提供商更新或删除 DNS 记录。 有关详细信息,请参阅“验证 GitHub Pages 的自定义域”。

延伸阅读