跳至主要内容

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

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

谁可以使用此功能?

GitHub Pages 在公共仓库中可使用 GitHub Free 和组织的 GitHub Free;在公共和私有仓库中可使用 GitHub Pro、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server。欲了解更多信息,请参阅 GitHub 的套餐

平台导航

拥有仓库管理员权限的人员可以为 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. 在仓库名称下,点击 设置。如果您看不到 “Settings” 选项卡,请选择 下拉菜单,然后点击 设置

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

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

  4. 在 “Custom domain” 下,输入您的自定义域名,然后点击 保存。如果您从分支发布站点,这将创建一个提交,将 CNAME 文件直接添加到源分支的根目录。如果您使用自定义 GitHub Actions 工作流进行发布,则不会创建 CNAME 文件,任何已有的 CNAME 文件都会被忽略且不是必需的。有关发布来源的更多信息,请参阅 Configuring a publishing source for your GitHub Pages site

  5. 导航至您的 DNS 提供商,创建 ALIASANAMEA 记录。您也可以创建 AAAA 记录以支持 IPv6。如果您实现 IPv6 支持,强烈建议在使用 AAAA 记录的同时再添加一条 A 记录,因为 IPv6 在全球的采用仍然较慢。有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商文档。

    • 要创建 ALIASANAME 记录,请将您的根域名指向站点的默认域名。有关站点默认域名的更多信息,请参阅 What is 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 提供商自动设置了默认记录,请在继续之前将其删除。

警告

强烈建议您不要使用通配符 DNS 记录,例如 *.example.com。这些记录会导致您立即面临域名被接管的风险,即使您已经验证了域名。例如,验证了 example.com 可以防止他人使用 a.example.com,但仍可能被他人接管 b.a.example.com(该子域受通配符记录覆盖)。

  1. 打开 终端终端Git Bash

  2. 要确认您的 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
      
  3. 如果您使用静态站点生成器在本地构建站点并将生成的文件推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地仓库。更多信息,请参阅 Troubleshooting custom domains and GitHub Pages

  4. 可选地,要为您的站点强制使用 HTTPS 加密,请选择 强制 HTTPS。此选项可能需要最长 24 小时才能可用。更多信息,请参阅 Securing your GitHub Pages site with HTTPS

配置根域名以及 www 子域名变体

注意

在根域名的同时设置 www 子域名是 HTTPS 受保护网站的推荐做法。

如果您将根域名用作自定义域名,建议同时设置 www 子域名。如果您通过 DNS 提供商为每种域名类型配置了正确的记录,GitHub Pages 将自动在这些域名之间创建重定向。例如,如果您将 www.example.com 配置为站点的自定义域名,并且已为根域名和 www 域名设置了 GitHub Pages DNS 记录,则 example.com 将重定向到 www.example.com。如果您改为将 example.com 配置为自定义域名,则 www.example.com 将重定向到 example.com。自动重定向同样适用于其他子域名,例如 www.blog.example.com 将重定向到 blog.example.com,或反之。无法配置以 www.www. 开头的域名。更多信息,请参阅 Configuring a subdomain

导航至您的 DNS 提供商,为 www 子域名创建指向您 GitHub Pages 默认域名的 CNAME 记录。例如,如果您的站点位于 `.github.io`,则应创建一条将 `www.example.com` 指向 `.github.io` 的 CNAME 记录。同理,对于位于 `.github.io` 的组织站点,应创建将 `www.example.com` 指向 `.github.io` 的 CNAME 记录。确保 CNAME 记录直接指向 `.github.io` 或 `.github.io`,不要包含仓库名称。

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

配置子域名

要设置 www 或自定义子域名,例如 www.example.comblog.example.com,必须在仓库设置中添加您的域名。之后,在 DNS 提供商处配置一条 CNAME 记录。

  1. 在 GitHub 上,前往您站点的仓库。

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

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

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

  4. 在 “Custom domain” 下,输入您的自定义域名,然后点击 保存。如果您从分支发布站点,这将创建一个提交,将 CNAME 文件直接添加到源分支的根目录。如果您使用自定义 GitHub Actions 工作流进行发布,则不会创建 CNAME 文件,任何已有的 CNAME 文件都会被忽略且不是必需的。有关发布来源的更多信息,请参阅 Configuring a publishing source for your GitHub Pages site

    注意

    如果您的自定义域名是国际化域名(IDN),必须输入其 Punycode 编码形式。

    关于 Punycode 的更多信息,请参阅 Internationalized domain name

  5. 导航至您的 DNS 提供商,创建一条指向站点默认域名的 CNAME 记录,以将您的子域名指向该域名。例如,如果想为用户站点使用子域名 www.example.com,请创建一条将 www.example.com 指向 `.github.io` 的 CNAME 记录。如果想为组织站点使用子域名 another.example.com,请创建一条将 another.example.com 指向 `.github.io` 的 CNAME 记录。CNAME 记录始终应指向 `.github.io` 或 `.github.io`,不应包含仓库名称。有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商文档。有关站点默认域名的更多信息,请参阅 What is GitHub Pages?

    警告

    强烈建议您不要使用通配符 DNS 记录,例如 *.example.com。这些记录会导致您立即面临域名被接管的风险,即使您已经验证了域名。例如,验证了 example.com 可以防止他人使用 a.example.com,但仍可能被他人接管 b.a.example.com(该子域受通配符记录覆盖)。

  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 文件的提交拉取到本地仓库。更多信息,请参阅 Troubleshooting custom domains and GitHub Pages

  9. 可选地,要为您的站点强制使用 HTTPS 加密,请选择 强制 HTTPS。此选项可能需要最长 24 小时才能可用。更多信息,请参阅 Securing your GitHub Pages site with HTTPS

    注意

    如果将自定义子域名指向根域名,可能会在强制 HTTPS 时遇到问题,甚至导致子域名根本无法访问您的 GitHub Pages 站点。

自定义域名的 DNS 记录

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

要配置根域名,请添加下表中的所有 AAAAA 记录,或仅添加表中的 ALIAS/ANAME 记录。要同时配置根域名和 www 子域名(例如 example.comwww.example.com),请先配置根域名,再配置子域名。更多信息,请参阅 Configuring an apex domain and the www subdomain variant

警告

强烈建议您不要使用通配符 DNS 记录,例如 *.example.com。这些记录会导致您立即面临域名被接管的风险,即使您已经验证了域名。例如,验证了 example.com 可以防止他人使用 a.example.com,但仍可能被他人接管 b.a.example.com(该子域受通配符记录覆盖)。

情形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)
ALIAS or ANAME@USERNAME.github.io or
ORGANIZATION.github.io
子域
(ww​w.example.com,
blog.example.com)
CNAMESUBDOMAIN.example.com.USERNAME.github.io or
ORGANIZATION.github.io

移除自定义域名

如果出现自定义域名已被占用的错误,可能需要从其他仓库中移除该自定义域名。

  1. 在 GitHub 上,前往您站点的仓库。

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

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

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

  4. 在 “Custom domain” 下,点击 移除(Remove)。

    Screenshot of a custom domain. To the right of a text box reading "example.com", and a "Save" button, is a button labeled "Remove" in red type.

保护您的自定义域名

如果您的 GitHub Pages 站点已被停用但仍保留自定义域名,则该域名面临被劫持的风险。自定义域名仍在 DNS 提供商处配置,而站点被停用,可能导致他人在您的某个子域名上托管站点。

验证您的自定义域名可防止其他 GitHub 用户在其仓库中使用您的域名。如果您的域名未经过验证,且您的 GitHub Pages 站点被禁用,您应立即在 DNS 提供商处更新或删除 DNS 记录。更多信息,请参阅 Verifying your custom domain for GitHub Pages

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.