跳至主要内容

向私有系统交付 Webhook

为了限制您的私有系统在互联网上的暴露,您可以使用反向代理将 GitHub 的 webhook 转发到您的私有系统。

关于通过反向代理与私有系统集成

您可能希望将 GitHub webhook 交付到无法直接通过互联网访问的私有系统,例如 CI 系统、工作管理工具和自定义应用程序。您可以使用反向代理接收来自 GitHub 的 webhook 负载并将其交付到您的私有系统。

反向代理是一种位于客户端和应用程序之间的 Web 服务器。反向代理接收来自客户端的请求并将其转发给应用程序。这确保互联网客户端与底层应用程序之间不发生直接通信。多种系统可以用作反向代理,包括

  • Web 服务器,例如 nginx
  • API 网关
  • 免费开源的覆盖网络,例如 OpenZiti
  • 商业入口管理工具,例如 ngrok
  • 免费开源的入口管理工具,例如 zrok

如何配置反向代理取决于您所使用的系统。

保护到反向代理的流量

部署反向代理时,您应遵循反向代理提供商推荐的所有安全实践,以保护底层代理服务器的安全。此外,您还应采取以下措施,以确保仅将来自 GitHub 的请求转发到您的应用程序。

限制进入的 GitHub webhook 流量

您应将反向代理配置为仅允许来自用于交付 webhook 的 GitHub IP 地址段的 HTTPS POST 请求。这样可确保您的反向代理不会处理或转发其他请求。

/meta 端点返回一个列出 GitHub IP 地址段的 JSON 对象。用于交付 webhook 的 IP 地址段列在 hooks 元素中。

验证 webhook 负载

如果您的 webhook 配置了密钥令牌,GitHub 将在每个 webhook 负载中包含一个加密哈希。您应使用此哈希在私有系统采取任何操作之前验证从 GitHub 接收到的负载。更多信息,请参阅 验证 webhook 交付

您可以在反向代理或私有系统上实现负载验证。

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