Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

此版本的 GitHub Enterprise 已停止服务 2023-03-15. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

启用子域隔离

您可以设置子域隔离,将用户提供的内容与 GitHub Enterprise Server 设备的其他部分安全地隔离。

关于子域隔离

子域隔离可以减少跨站脚本和其他相关漏洞。 有关详细信息,请参阅维基百科上的“跨站脚本”。 强烈建议在 你的 GitHub Enterprise Server 实例 上启用子域隔离。

启用子域隔离后,GitHub Enterprise Server 会以子域替代多个路径。 启用子域隔离后,尝试访问某些用户提供内容的以前的路径(如 http(s)://HOSTNAME/raw/)可能会返回 404 错误。

未使用子域隔离的路径使用子域隔离的路径
http(s)://HOSTNAME/http(s)://docker.HOSTNAME/
http(s)://HOSTNAME/_registry/npm/https://npm.HOSTNAME/
http(s)://HOSTNAME/_registry/rubygems/https://rubygems.HOSTNAME/
http(s)://HOSTNAME/_registry/maven/https://maven.HOSTNAME/
http(s)://HOSTNAME/_registry/nuget/https://nuget.HOSTNAME/
http(s)://HOSTNAME/assets/http(s)://assets.HOSTNAME/
http(s)://HOSTNAME/avatars/http(s)://avatars.HOSTNAME/
http(s)://HOSTNAME/codeload/http(s)://codeload.HOSTNAME/
http(s)://HOSTNAME/gist/http(s)://gist.HOSTNAME/
http(s)://HOSTNAME/media/http(s)://media.HOSTNAME/

先决条件

警告:如果禁用子网分隔,建议同时在企业上禁用 GitHub Pages。 无法将用户提供的 GitHub Pages 内容与其余企业数据分隔。 有关详细信息,请参阅“为企业配置 GitHub Pages”。

启用子域隔离之前,您必须为新域配置网络设置。

  • 指定有效域名作为主机名,而不是指定 IP 地址。 有关详细信息,请参阅“配置主机名”。

警告:初始设置后不要更改 GitHub Enterprise Server 的主机名。 更改主机名将会导致意外的行为,甚至包括实例中断。

  • 为上文列出的子域设置通配符域名系统 (DNS) 记录或单独的 DNS 记录。 建议为指向服务器 IP 地址的 *.HOSTNAME 创建一条 A 记录,从而无需为各个子域创建多条记录。
  • *.HOSTNAME 获取一个使用者可选名称 (SAN) 同时适用于 HOSTNAME 和通配符域 *.HOSTNAME 的通配符传输层安全 (TLS) 证书。 例如,如果主机名为 github.octoinc.com,则获取一个公用名值设为 *.github.octoinc.com、SAN 值同时设为 github.octoinc.com*.github.octoinc.com 的证书。
  • 在设备上启用 TLS。 有关详细信息,请参阅“配置 TLS”。

启用子域隔离

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。 1. 在“ 站点管理”边栏中,单击“管理控制台”。 1. 在“设置”边栏中,单击“主机名”。

  3. 选择“子域隔离(建议)”。

  4. 在“设置”边栏下,单击“保存设置”。

    注意:保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  5. 等待配置运行完毕。