配置GitHub向通过Nginx反向代理的Jenkins发送WebHook


这样看来,似乎没有公网IP地址就没法使用WebHook了。实际上,还是有解决方案的。我有一个公网的反向代理,这个反向代理所代理的服务可以访问到Jenkins服务器。我们只需要让这个反向代理去代理一个Nginx,让Nginx把一个子目录转发到Jenkins所提供的REST API、其余目录仍不变,不就可以把Jenkins的Hook开到公网去了?

由于Nginx会过滤一些非标准请求头,而Jenkins需要用到一些自定义的请求头,所以需要在server一节中添加

ignore_invalid_headers off;

来禁用Nginx的过滤。

最后再添加代理规则:

location /real-hook-path/ {

    proxy_pass http://path-to-your-jenkins-hook/;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_method POST;

}

就可以了。