Jenkins报错截图如下

场景情况
- 笔者在
Linux服务器上部署Jenkins服务 - 使用
1Panel(宝塔的竞品)管理Linux服务器 - 在上面的应用商店安装
Jenkins(docker容器化方式) - 如下

这样的话,通过http的ip端口,就能够访问这个Jenkins服务了,比如:ashuai.site:29876
而后,为了使用ssl证书,笔者使用nginx在29877端口上,做一层代理,把请求转发到29876上的运行的Jenkins服务
如下
nginx
# 监听29877端口,处理HTTPS请求
server {
listen 29877 ssl;
server_name ashuai.site;
# SSL证书
ssl_certificate /etc/nginx/certs/ashuai.site.pem;
ssl_certificate_key /etc/nginx/certs/ashuai.site.key;
# SSL优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 反向代理到现有Jenkins服务
location / {
proxy_pass http://localhost:29876; # Jenkins服务
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# 支持Jenkins控制台WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
于是,就可以通过HTTPS的方式访问Jenkins服务做一些CICD的操作了,如下

但是却看到一个报错,告知反向代理错误

这个反向代理错误,并不是nginx配置的错误(容易让人误解)而是,Jenkins初始化安装的时候,使用服务器的ip和后续的域名对应错误导致的
解决方案
我们只需要把Jenkins Location的Jenkins URL修改成当前域名端口访问方式即可
实际上,如果提前打开浏览器控制,我们已经能够看到对应的报错提示了

在Jenkins的系统管理页面,点击 系统配置

找到Jenkins Location的Jenkins URL

修改成

这样的话,控制台也不会报错了,问题解决
A good memory is better than a bad pen. Record it down...
Jenkins安全漏洞是一个让人有些困扰的问题,笔者建议,可以部署在内网
如果是云服务器的话,可以通过云服务器的安全组的CIDR,设置仅自己的ip能够访问,提高一下安全策略,如下

推荐 1Panel(现代化、开源的Linux服务器运维管理面板)
个人感觉比宝塔更简约好用 1panel.cn/