Jenkins報錯截圖如下
場景情況
- 筆者在
Linux服務器上部署Jenkins服務 - 使用
1Panel(寶塔的競品)管理Linux服務器 - 在上面的應用商店安裝
Jenkins(docker容器化方式) - 如下
這樣的話,通過http的ip端口,就能夠訪問這個Jenkins服務了,比如:http://ashuai.site:29876
而後,為了使用ssl證書,筆者使用nginx在29877端口上,做一層代理,把請求轉發到29876上的運行的Jenkins服務
如下
# 監聽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服務器運維管理面板)
個人感覺比寶塔更簡約好用 https://1panel.cn/