在 Ubuntu 上把 Jenkins 放到 Nginx 后面(反向代理)是常见做法,常用于:
下面是从 0 到可用 的标准配置流程。
sudo apt update
sudo apt install jenkins
Jenkins 默认监听:
http://localhost:8080
sudo apt install nginx
sudo nano /etc/nginx/sites-available/jenkins
server {
listen 80;
server_name jenkins.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_read_timeout 60s;
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;
}
}
⚠️
server_name改成你的域名或服务器 IP
sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
编辑:
sudo nano /etc/default/jenkins
找到 JAVA_ARGS,添加:
JAVA_ARGS="-Djenkins.model.JenkinsLocationConfiguration.url=http://jenkins.example.com/"
或更常见方式(系统属性):
JAVA_ARGS="-Djenkins.install.runSetupWizard=false"
如果你使用 systemd(Ubuntu 16.04+),改这个文件:
sudo systemctl edit jenkins
写入:
[Service]
Environment="JENKINS_ARGS=--httpListenAddress=127.0.0.1 --httpPort=8080"
sudo systemctl restart jenkins
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d jenkins.example.com
Certbot 会自动修改 Nginx 配置,加上:
登录 Jenkins:
http://jenkins.example.com
进入:
Manage Jenkins → System
设置:
https://jenkins.example.com/
✅ 保存
检查:
proxy_set_header X-Forwarded-Proto $scheme;
必须有(HTTPS 下尤其重要)
Nginx 需支持 WebSocket:
location / {
proxy_pass http://127.0.0.1:8080;
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
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_http_version 1.1;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
如果你愿意,可以告诉我:
我可以给你 完全对应的配置。