管理 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 中。 在验证 DNS 记录的配置是否正确之前,必须安装 BIND

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

配置子域

要设置 www 或自定义子域,例如 www.example.comblog.example.com,您必须将域添加到仓库设置,这将在站点的仓库中创建 CNAME 文件。 然后,通过 DNS 提供商配置 CNAME 记录。

  1. 在 GitHub 上,导航到站点的仓库。

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. 在左侧边栏中,单击 Pages(页面)左侧边栏中的页面选项卡

  4. 在 "Custom domain(自定义域)"下,输入自定义域,然后单击 Save(保存)。 这将创建一个在发布源根目录中添加 CNAME 文件的提交。 保存自定义域按钮

  5. 导航到您的 DNS 提供程序并创建 CNAME 记录,使子域指向您站点的默认域。 例如,如果要对您的用户站点使用子域 www.example.com,您可以创建 CNAME 记录,使 www.example.com 指向 <user>.github.io。 如果要对您的组织站点使用子域 www.anotherexample.com,您可以创建 CNAME 记录,使 www.anotherexample.com 指向 <organization>.github.ioCNAME 记录应该始终指向 <user>.github.io<organization>.github.io,不包括仓库名称。 有关如何创建正确记录的更多信息,请参阅 DNS 提供程序的文档。 有关站点默认域的更多信息,请参阅“关于 GitHub Pages”。

    警告:我们强烈建议不要使用通配符 DNS 记录,例如 *.example.com。 通配符 DNS 记录将允许任何人在您的其中一个子域上托管 GitHub Pages 站点。

  6. 打开 Terminal(终端)Terminal(终端)Git Bash

  7. 要确认您的 DNS 记录配置正确,请使用 dig 命令,将 WWW.EXAM.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 加密,请选择 Enforce HTTPS(实施 HTTPS)。 可能要过 24 小时才能使用此选项。 更多信息请参阅“使用 HTTPS 保护 GitHub Pages 站点”。 对自定义域名强制使用 HTTPS 选项

配置 apex 域

要设置 apex 域,例如 example.com,您必须使用 DNS 提供程序配置 GitHub Pages 仓库中的 CNAME 文件以及至少一条 ALIASANAMEA 记录。

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

  1. 在 GitHub 上,导航到站点的仓库。

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. 在左侧边栏中,单击 Pages(页面)左侧边栏中的页面选项卡

  4. 在 "Custom domain(自定义域)"下,输入自定义域,然后单击 Save(保存)。 这将创建一个在发布源根目录中添加 CNAME 文件的提交。 保存自定义域按钮

  5. 导航到 DNS 提供程序并创建一个 ALIASANAMEA 记录。 You can also create AAAA records for IPv6 support. 有关如何创建正确记录的更多信息,请参阅 DNS 提供程序的文档。

    • 要创建 ALIASANAME 记录,请将 apex 域指向站点的默认域。 有关站点默认域的更多信息,请参阅“关于 GitHub Pages”。
    • 要创建 A 记录,请将 apex 域指向 GitHub Pages 的 IP 地址。
      185.199.108.153
      185.199.109.153
      185.199.110.153
      185.199.111.153
    • To create AAAA records, point your apex domain to the IP addresses for GitHub Pages.
      2606:50c0:8000::153
      2606:50c0:8001::153
      2606:50c0:8002::153
      2606:50c0:8003::153

    警告:我们强烈建议不要使用通配符 DNS 记录,例如 *.example.com。 通配符 DNS 记录将允许任何人在您的其中一个子域上托管 GitHub Pages 站点。

  6. 打开 Terminal(终端)Terminal(终端)Git Bash

  7. 要确认您的 DNS 记录配置正确,请使用 dig 命令,将 EXAM.COM 替换为您的 apex 域。 确认结果与上面 GitHub Pages 的 IP 地址相匹配。

    • For A records.
      $ 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
    • For AAAA records.
      $ 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
  8. 如果您使用静态站点生成器在本地构建站点,并将生成的文件推送到 GitHub,请拉取将CNAME文件添加到本地仓库的提交。 更多信息请参阅“自定义域和 GitHub Pages 故障排除”。

  9. (可选)要为您的站点实施 HTTPS 加密,请选择 Enforce HTTPS(实施 HTTPS)。 可能要过 24 小时才能使用此选项。 更多信息请参阅“使用 HTTPS 保护 GitHub Pages 站点”。 对自定义域名强制使用 HTTPS 选项

配置 apex 域和 www 子域变种

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

要与 apex 域一起设置 www 子域,您必须先配置 apex 域,这将通过您的 DNS 提供商创建 ALIASANAMEA 记录。 更多信息请参阅“配置 apex 域”。

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

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

  2. 在仓库名称下,单击 Settings(设置)仓库设置按钮

  3. 在左侧边栏中,单击 Pages(页面)左侧边栏中的页面选项卡

  4. 在“Custom domain(自定义域)”下,单击 Remove(删除)保存自定义域按钮

延伸阅读

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。