下面给你一个在 CentOS 上安装 Jenkins + 用 Nginx 做反向代理的完整常见做法(以 CentOS 7/8 为例,Jenkins 默认 8080 端口)。
Jenkins 需要 Java(推荐 JDK 11 或 17)
sudo yum install -y java-11-openjdk-devel
java -version
sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum install -y jenkins
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
默认端口:8080
sudo yum install -y epel-release
sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
sudo vi /etc/nginx/conf.d/jenkins.conf
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 在子路径(如
/jenkins),需要额外配置,下面会说。
sudo nginx -t
sudo systemctl restart nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
如果访问 502,可能是 SELinux 限制了 Nginx 访问:
sudo setsebool -P httpd_can_network_connect 1
http://你的IP/var/lib/jenkins/secrets/initialAdminPassword)http://jenkins.example.com/listen 443 ssl;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
location /jenkins/ {
proxy_pass http://127.0.0.1:8080/jenkins/;
}
并在 Jenkins 中设置:
Jenkins URL = http://domain/jenkins/
X-Forwarded-Proto 没配如果你愿意,可以告诉我:
我可以直接给你一份完全对应的配置。