【DevOps实践】2. 使用NGINX配置Jenkins的https域名访问

1. 摘要

《【DevOps实践】1.在Ubuntu上安装持续集成工具Jenkins》安装的Jenkins是http://IP访问的,改为https访问,相对安全些。本文讲解配置方法。

2.实践内容

2.1 配置域名解析

经过第一篇文章的操作,使用http:// ip_address:8080的方式输入用户名/密码已经可以访问jenkins服务器了。
先配置域名解析到该服务器。本例中,我们的最终访问地址为
https://jenkins.artarva.com。

2.2 申请免费SSL证书

很多同学可能还不知道,阿里云是可以申请免费SSL证书的,时间有效期为1年。每个企业有20个免费的单域名SSL证书。
https://yundun.console.aliyun.com/?spm=a2c1d.8251892.products-grouped.dcas.50595b76R0EC37&p=cas#/overview/cn-hangzhou

需要返回到域名解析中,把按照提示,把DNS解析到域名解析中。然后下载NGINX的SSL证书文件,5241378_jenkins.artarva.com_nginx.zip,解压后有私钥和证书文件信息:5241378_jenkins.artarva.com.key,5241378_jenkins.artarva.com.pem。

2.3 配置NGINX反向代理

我们假设NGINX在目标服务器已经安装好了。没有安装好的,参考《【NGINX入门】1.Nginx基本介绍和安装入门》。

配置Jenkins的NGINX配合文件“Jenkins.conf”,例如:

server
{   listen 443 ssl http2;
    #listen 80;
    server_name jenkins.artarva.com;


    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /etc/letsencrypt/live/jenkins.artarva.com/5241378_jenkins.artarva.com.pem;
    ssl_certificate_key    /etc/letsencrypt/live/jenkins.artarva.com/5241378_jenkins.artarva.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;

    #Location配置
    location / {
        proxy_set_header X-Rea $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://localhost:8080;
        proxy_set_header X-Forwarded-Proto $scheme;

    }

    access_log  /www/wwwlogs/jenkins.artarva.com.log;
    error_log  /www/wwwlogs/jenkins.artarva.com.log;
}

然后在nginx.conf中增加该配置文件。

...
include /www/server/nginx/conf/jenkins.conf;

重启下NGINX,就可以直接访问https://jenkins.artarva.com了。

2.4 问题描述

问题描述:
使用nginx 对Jenkins做反向代理,nginx使用https协议,Jenkins使用http访问,用https://jenkins.com 访问可以正常进入首页,在首页里点击其他功能页时,跳转会自动请求协议为http的协议。所以我们需要将跳转其他功能页时,使用的协议也修改为https。

解决方式
需要在nginx配置中加入 proxy_set_header X-Forwarded-Proto $scheme; 这个请求头。

        location / {
                proxy_set_header X-Rea $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://localhost:8080;
                proxy_set_header X-Forwarded-Proto $scheme;
       }

转载于:https://www.cnblogs.com/jakaBlog/p/11341532.html

3. 参考

(1)如何在Ubuntu 16.04上安装Jenkins
https://www.jianshu.com/p/845f267aec52

(2)Jenkins 通过nginx使用Https协议反向代理
https://blog.csdn.net/diandianpai7591/article/details/101885689

(3)修改Ubuntu下的jenkins端口号
https://blog.csdn.net/csfreebird/article/details/9033443

你可能感兴趣的:(【DevOps实践】2. 使用NGINX配置Jenkins的https域名访问)