应用背景
deploy平台在A,通过http触发A内网的测试机,但是B地的机房到A内网的测试机器不通。我们不想在B的内网重复部署一套测试环境,最后决定在A上部署一套反向代理,处理B地机房访问A内网测试机器的请求。
开干
我们的环境是CentOS,不要再费劲去下载nginx包,捣鼓安装这种体力活,最简单的方法是:
$sudo yum install nginx -y
这样系统自动处理好了包依赖问题。
$ sudo su
$ cd /etc/init.d
$ wget http://sean-images.qiniudn.com/nginx
$ chmod a+x nginx
这样可以把nginx作为一个系统服务:
$ service nginx {start|stop|status|restart|reload|configtest}
然后是配置nginx,使得当nginx转发这种请求:
server {
listen 8080;
server_name _;
location /job {
proxy_pass http://myjenkinshome.com:8080
proxy_set_header X-Real-IP $remote_addr;
proxy_method
}
如果想禁止ip直接访问代理,listen这一行加上default字段:
listen 8080 default;
进行测试:
$ curl -u user:passwd --data "TRIGGER=test" http://myjenkinshome.com:8080/job/mytestjob
发现job确实被远程触发。
附录
nginx中proxy字段补充说明:
1. proxy_pass:转发到URL地址、unix句柄、或者把http转成https
2. proxy_set_header:要求转发头部
3. proxy_method:转发协议方法名
4. proxy_hide_header:指定禁止转发哪些头部字段
5. proxy_pass_header:指定转发哪些头部字段
6. proxy_pass_request_body:向上游发送http包体部分
7. proxy_pass_request_headers:是否转发头部
8. proxy_redirect:当上游响应是重定向301或者刷新302时,重设头部的location或者refresh字段。
9. proxy_next_upstream:当上游服务器出现错误时,继续请求另一台服务器。