You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Jenkins经Nginx反向代理后管理页提示配置损坏求助

解决Jenkins反向代理下「管理Jenkins」页面报错问题

已将Jenkins以Docker容器部署在Nginx反向代理后,通过example.com/jenkins/访问,除「管理Jenkins」页面出现「It appears that your reverse proxy set up is broken」错误外,其余功能均正常。

用户现有配置

Docker Compose 文件

version: "3.4"

services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    environment:
      JENKINS_OPTS: "--prefix=/jenkins"
    ports:
      - 9292:8080
      - 50000:50000
    volumes:
      - ./data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

Nginx 配置片段

location /jenkins/ {
    proxy_set_header    Host                $host:$server_port;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-Host    $host:$server_port;
    proxy_set_header    X-Forwarded-Server  $host:$server_port;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    proxy_pass      http://localhost:9292;
    proxy_redirect  http://localhost:9292/ /jenkins/;
}

修复方案

问题出在Nginx的proxy_pass和proxy_redirect配置,以及Jenkins反向代理头信息的匹配上,按以下步骤修改:

1. 调整Nginx配置

将proxy_pass路径补全以匹配Jenkins的prefix,同时修正头信息和重定向规则:

location /jenkins/ {
    proxy_set_header    Host                $host;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-Host    $host;
    proxy_set_header    X-Forwarded-Server  $host;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    # 补全路径,和Jenkins的--prefix=/jenkins对应
    proxy_pass      http://localhost:9292/jenkins/;
    # 让Nginx自动处理重定向路径
    proxy_redirect  default;
}
  • 把proxy_pass从http://localhost:9292改为http://localhost:9292/jenkins/,确保请求路径完整传递给Jenkins
  • 移除$server_port(站点使用80/443默认端口时,无需在Host头携带端口)
  • 用proxy_redirect default替代手动规则,避免路径匹配错误

2. 确认Jenkins配置

进入Jenkins「管理Jenkins」→「系统配置」,找到「Jenkins Location」:

  • 将Jenkins URL设为https://example.com/jenkins/(使用HTTP协议则替换为http)
  • 确认反向代理头信息已被正确识别(调整Nginx配置后通常自动生效)

3. 重启服务

  • 重启Nginx:sudo systemctl restart nginx
  • 重启Jenkins容器:docker-compose restart jenkins

问题原因

「管理Jenkins」页面会严格校验反向代理请求头与Jenkins自身URL配置是否匹配。原配置中proxy_pass未传递/jenkins路径,导致Jenkins收到的请求为根路径,和其--prefix=/jenkins的设置冲突,触发错误提示。多余的$server_port也会导致Host头不匹配,加剧校验失败。

内容的提问来源于stack exchange,提问作者Noor Muradi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:13:11