{"meta":{"title":"将 Webhook 传送到专用系统","intro":"为了限制您的专用系统暴露在 Internet 上，可以使用反向代理将 Webhook 从 GitHub 转发到您的专用系统。","product":"Webhook","breadcrumbs":[{"href":"/zh/webhooks","title":"Webhook"},{"href":"/zh/webhooks/using-webhooks","title":"使用网络钩子（Webhook）"},{"href":"/zh/webhooks/using-webhooks/delivering-webhooks-to-private-systems","title":"传送到专用系统"}],"documentType":"article"},"body":"# 将 Webhook 传送到专用系统\n\n为了限制您的专用系统暴露在 Internet 上，可以使用反向代理将 Webhook 从 GitHub 转发到您的专用系统。\n\n## 关于通过反向代理与私有系统集成\n\n你可能希望将 Webhook 传递到 GitHub 无法从 Internet 直接访问的专用系统，例如 CI 系统、工作管理工具和自定义应用。 可以使用反向代理从 GitHub 中接收 Webhook 有效负载并将其传递到专用系统。\n\n反向代理是位于客户端和应用程序之间的 Web 服务器。 反向代理接收来自客户端的请求，并将其转发到应用程序。 这可确保 Internet 上的客户端与底层应用程序之间不会发生直接通信。 各种系统都可以提供反向代理，包括：\n\n* Web 服务器，如 [nginx](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/)\n* API 网关\n* 免费开源覆盖网络，如 [OpenZiti](https://openziti.io)\n* 商业入口管理工具，如 [ngrok](https://ngrok.com/partners/github)\n* 免费开源入口管理工具，如 [zrok](https://zrok.io)\n\n配置反向代理的方式因所使用的系统而异。\n\n## 保护到反向代理的流量\n\n部署反向代理时，应遵循反向代理提供商建议的所有做法来保护底层代理服务器。 此外，应执行以下步骤来验证是否仅将来自 GitHub 的请求转发到应用程序。\n\n### 限制发到 GitHub Webhook 的入站流量\n\n应将反向代理配置为仅允许来自用于传送 Webhook 的 GitHub IP 范围的子集的 HTTPS POST 请求。 这可确保反向代理不会处理或转发其他请求。\n\n[\n`/meta` 终结点](/zh/rest/meta/meta#get-github-meta-information)返回一个 JSON 对象，其中列出了GitHub的 IP 范围。 用于传送 Webhook 的 IP 范围列在 `hooks` 元素中。\n\n### 验证 Webhook 有效负载\n\n如果 Webhook 配置了机密令牌，GitHub 则会包含每个 Webhook 有效负载的加密哈希。 在专用系统执行任何操作之前，应使用此哈希来验证从 GitHub 中接收的有效负载。 有关详细信息，请参阅“[验证 Webhook 交付](/zh/webhooks/using-webhooks/validating-webhook-deliveries)”。\n\n可以在反向代理或专用系统上实现有效负载验证。"}