Ubuntu通过Nginx反向代理Jenkins

云服务器上部署的应用多了开放的端口也多, 出于安全性考虑, 关闭服务器8080端口

修改Jenkins访问方式, 通过Nginx反向代理通过80端口访问Jenkins

修改nginx 的配置文件

sudo vim /etc/nginx/sites-available/mysite.conf

修改结果

upstream jenkins_server {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    server_name www.sitven.cn;                                      # 名称
    charset utf-8;                                                  # 格式
    client_max_body_size 75M;    

   location /jenkins/ {                                             # jenkins访问路径
        proxy_http_version 1.1; ## For websocket
        proxy_set_header Upgrade $http_upgrade; ## For websocket
        proxy_set_header Connection "upgrade"; ## For websocket
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_pass http://jenkins_server;
    }
}

其他配置不修改,继续沿用博客项目的配置

 注:nginx实现反向代理的需求而增加了ngx_http_proxy_module模块, 其中proxy_set_header指令就是该模块需要读取的配置文件

        Host的含义是表明请求的主机名,因为nginx作为反向代理使用,而如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败【默认反向代理服务器会向后端真实服务器发送请求,并且请求头中的host字段应为proxy_pass指令设置的服务器】

        X_Forward_For字段表示该条http请求是有谁发起的?如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。因此,在配置用作反向代理的Nginx中一般会增加两条配置,修改http的请求头:

proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;

这里的$http_host$remote_addr都是Nginx的导出变量,可以再配置文件中直接使用。如果Host请求头部没有出现在请求头中,则$http_host值为空,但是$host值为主域名。因此,一般而言,会用$host代替$http_host变量,从而避免http请求中丢失Host头部的情况下Host不被重写的失误

修改jenkins的配置文件

在ubuntu系统中,位于/etc/default/jenkins  在JENKINS_ARGS中追加prefix

vim /etc/default/jenkins
# 追加
--prefix=/jenkins
# 追加结果
JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --prefix=/jenkins"

检验Nginx配置文件是否正确

sudo nginx -t

重启Nginx和Jenkins

sudo service nginx restart        # 重启Nginx
sudo service jenkins restart      # 重启Jenkins

访问Jenkins

修改jenkins配置

修改Jenkins系统管理-系统设置-Jenkins Location-Jnekins URL,否则会提示反向代理配置错误 

进入云服务控制台关闭8080端口的入站规则

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章