关于通过反向代理与私有系统集成
您可能希望将 GitHub webhook 交付到无法直接通过互联网访问的私有系统,例如 CI 系统、工作管理工具和自定义应用程序。您可以使用反向代理接收来自 GitHub 的 webhook 负载并将其交付到您的私有系统。
反向代理是一种位于客户端和应用程序之间的 Web 服务器。反向代理接收来自客户端的请求并将其转发给应用程序。这确保互联网客户端与底层应用程序之间不发生直接通信。多种系统可以用作反向代理,包括
如何配置反向代理取决于您所使用的系统。
保护到反向代理的流量
部署反向代理时,您应遵循反向代理提供商推荐的所有安全实践,以保护底层代理服务器的安全。此外,您还应采取以下措施,以确保仅将来自 GitHub 的请求转发到您的应用程序。
限制进入的 GitHub webhook 流量
您应将反向代理配置为仅允许来自用于交付 webhook 的 GitHub IP 地址段的 HTTPS POST 请求。这样可确保您的反向代理不会处理或转发其他请求。
/meta 端点返回一个列出 GitHub IP 地址段的 JSON 对象。用于交付 webhook 的 IP 地址段列在 hooks 元素中。
验证 webhook 负载
如果您的 webhook 配置了密钥令牌,GitHub 将在每个 webhook 负载中包含一个加密哈希。您应使用此哈希在私有系统采取任何操作之前验证从 GitHub 接收到的负载。更多信息,请参阅 验证 webhook 交付。
您可以在反向代理或私有系统上实现负载验证。