温馨提示×

jenkins centos如何配nginx

小樊
42
2026-09-15 10:57:11
栏目: 智能运维

下面给你一个在 CentOS 上安装 Jenkins + 用 Nginx 做反向代理的完整常见做法(以 CentOS 7/8 为例,Jenkins 默认 8080 端口)。


一、安装 Jenkins(CentOS)

1. 安装 Java

Jenkins 需要 Java(推荐 JDK 11 或 17)

sudo yum install -y java-11-openjdk-devel
java -version

2. 添加 Jenkins 源并安装

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

3. 启动 Jenkins

sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

默认端口:8080


二、安装 Nginx(CentOS)

sudo yum install -y epel-release
sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

三、配置 Nginx 反向代理 Jenkins

1. 创建 Nginx 配置文件

sudo vi /etc/nginx/conf.d/jenkins.conf

2. 写入以下内容

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),需要额外配置,下面会说。

3. 检查并重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

四、防火墙 & SELinux(很重要)

1. 开放端口

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

2. SELinux(常见问题)

如果访问 502,可能是 SELinux 限制了 Nginx 访问:

sudo setsebool -P httpd_can_network_connect 1

五、Jenkins 中配置访问地址(可选但推荐)

  1. 浏览器访问 http://你的IP
  2. 解锁 Jenkins(看 /var/lib/jenkins/secrets/initialAdminPassword
  3. Manage Jenkins → System
  4. 修改:
    • Jenkins URL:http://jenkins.example.com/

六、常见扩展

1. 使用 HTTPS(推荐)

listen 443 ssl;
ssl_certificate     /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;

2. Jenkins 子路径(如 /jenkins)

location /jenkins/ {
    proxy_pass http://127.0.0.1:8080/jenkins/;
}

并在 Jenkins 中设置:

Jenkins URL = http://domain/jenkins/

七、排查问题

  • 502 Bad Gateway → Jenkins 没启动 / SELinux
  • 一直转圈X-Forwarded-Proto 没配
  • 静态资源 404 → 子路径配置错误

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否用 域名 / HTTPS / 子路径
  • Jenkins 是否 Docker 安装

我可以直接给你一份完全对应的配置

0