关于通过反向代理与私有系统集成
你可能希望将 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 发送”。
你可以在反向代理或私有系统上实现有效负载验证。