在 CentOS 上给 Jenkins 配置 SSL,常见有 3 种方式,最推荐的是 Nginx 反向代理 + SSL(简单、安全、易维护)。下面我按最常用方案一步步讲。
✅ 推荐:Nginx + SSL(证书可用 Let’s Encrypt 或企业证书)
❌ 不推荐:直接改 Jenkins 内置 Winstone(配置复杂、易出错)
8080)jenkins.example.com)80 / 443yum install -y nginx
systemctl enable nginx
systemctl start nginx
yum install -y epel-release
yum install -y certbot python3-certbot-nginx
certbot --nginx -d jenkins.example.com
✅ 会自动:
编辑 Nginx 配置:
vi /etc/nginx/conf.d/jenkins.conf
示例配置:
server {
listen 80;
server_name jenkins.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name jenkins.example.com;
ssl_certificate /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jenkins.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
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 https;
}
}
nginx -t
systemctl restart nginx
访问:
https://jenkins.example.com
进入 Jenkins: Manage Jenkins → Configure System
勾选: ✅ Jenkins URL
https://jenkins.example.com
✅ 启用 代理兼容
--httpListenAddress=127.0.0.1
如果你没有公网域名,可使用自签名证书:
openssl req -x509 -newkey rsa:2048 \
-keyout /etc/nginx/jenkins.key \
-out /etc/nginx/jenkins.crt -days 365 -nodes
Nginx 中替换:
ssl_certificate /etc/nginx/jenkins.crt;
ssl_certificate_key /etc/nginx/jenkins.key;
⚠️ 浏览器会提示不安全,属正常
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
SELinux(如报错):
setsebool -P httpd_can_network_connect 1
certbot renew --dry-run
❌ Jenkins 仍走 http
✅ 检查 X-Forwarded-Proto
❌ 502 错误
✅ Jenkins 是否启动、端口是否正确
❌ 登录跳转异常
✅ Jenkins URL 必须是 https
✅ 最佳实践:
CentOS + Jenkins + Nginx + Let’s Encrypt
如果你愿意,我可以:
直接告诉我你的 CentOS 版本 & Jenkins 安装方式 即可。