关于通过反向代理与专用系统集成
你可能希望将 GitHub Webhook 传送到无法从 Internet 直接访问的专用系统,例如 CI 系统、工作管理工具和自定义应用。 可以使用反向代理从 GitHub 接收 Webhook 有效负载,并将其传送到专用系统。
反向代理是位于客户端和应用程序之间的 Web 服务器。 反向代理接收来自客户端的请求,并将其转发到应用程序。 这可确保 Internet 上的客户端与底层应用程序之间不会发生直接通信。 各种系统都可以提供反向代理,包括:
配置反向代理的方式因所使用的系统而异。
保护到反向代理的流量
部署反向代理时,应遵循反向代理提供商建议的所有做法来保护底层代理服务器。 此外,应执行以下步骤来验证是否仅将来自 GitHub 的请求转发到应用程序。
将入站流量限制到 GitHub Webhook
应将反向代理配置为仅允许来自 GitHub IP 范围子集的 HTTPS POST 请求,这些 IP 范围用于传送 Webhook。 这可确保反向代理不会处理或转发其他请求。
/meta
端点返回一个 JSON 对象,其中列出了 GitHub 的 IP 范围。 用于传送 Webhook 的 IP 范围列在 hooks
元素中。
验证 Webhook 有效负载
如果 Webhook 配置了机密令牌,GitHub 将包含每个 Webhook 有效负载的加密哈希。 在专用系统执行任何操作之前,应使用此哈希验证从 GitHub 接收的有效负载。 有关详细信息,请参阅“验证 Webhook 交付”。
可以在反向代理或专用系统上实现有效负载验证。