在 Ubuntu 上给 Jenkins 配置域名,通常思路是:
Jenkins 本身监听端口(如 8080)→ 用 Nginx/Apache 做反向代理 → 绑定域名并配置 HTTPS
下面以 Ubuntu + Nginx + 域名 example.com 为例说明。
jenkins.example.com)编辑 Jenkins 配置文件:
sudo vim /etc/default/jenkins
确保:
JENKINS_ARGS="--httpListenAddress=127.0.0.1 --httpPort=8080"
重启 Jenkins:
sudo systemctl restart jenkins
这样 Jenkins 只监听本机,外部通过 Nginx 访问
sudo apt update
sudo apt install nginx -y
创建配置文件:
sudo vim /etc/nginx/sites-available/jenkins
内容如下(HTTP):
server {
listen 80;
server_name jenkins.example.com;
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;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
此时访问:
http://jenkins.example.com
使用 Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d jenkins.example.com
Certbot 会自动:
进入:
Jenkins → Manage Jenkins → System
修改:
Jenkins URL: https://jenkins.example.com/
保存。
sudo ufw allow 80
sudo ufw allow 443
检查:
X-Forwarded-Proto确保 Nginx 有:
proxy_set_header X-Forwarded-Proto $scheme;
确保 Jenkins 没监听 0.0.0.0:8080
如果你用的是 Apache、Docker Jenkins 或 内网穿透(如 frp / ngrok),可以告诉我,我可以给你对应方案。