下面按“在 Debian 上用 Nginx 反向代理 Jenkins”这个最常见场景来讲,也是生产环境推荐做法。
假设你已经:
8080)如果还没装 Jenkins:
sudo apt update
sudo apt install jenkins
如果还没装 Nginx:
sudo apt install nginx
sudo nano /etc/nginx/sites-available/jenkins
内容如下(最常用模板):
server {
listen 80;
server_name jenkins.example.com; # 改成你的域名或服务器IP
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 $scheme;
# Jenkins WebSocket 支持(必须)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Jenkins 默认只监听 localhost,需要确认:
sudo nano /etc/default/jenkins
确保有:
JENKINS_ARGS="--httpListenAddress=127.0.0.1 --httpPort=8080"
重启 Jenkins:
sudo systemctl restart jenkins
现在你可以直接访问:
http://jenkins.example.com
而不是:
http://服务器IP:8080
登录 Jenkins →
Manage Jenkins → System
设置:
http://jenkins.example.com/如果是 HTTPS,填 https://
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d jenkins.example.com
Certbot 会自动改 Nginx 配置并启用 HTTPS。
原因:WebSocket 未转发
✅ 确保有:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
检查:
systemctl status jenkins
curl http://127.0.0.1:8080
确保 Jenkins URL 和 Nginx server_name 一致。
✅ Debian
✅ Jenkins(8080)
✅ Nginx 反代
✅ WebSocket 支持
✅ HTTPS(生产必须)
如果你需要:
告诉我你的使用场景,我可以直接给你完整配置。