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

Nginx反向代理Jenkins返回404,请求排查解决方法

Jenkins反向代理404问题排查与解决

问题背景

Jenkins部署在192.168.0.37:8080,Nginx运行在192.168.0.80,期望通过http://192.168.0.80/jenkins访问Jenkins,但两种Nginx配置均返回404错误。其中Nexus的代理配置正常,已尝试给JENKINS_ARGS添加--prefix=/jenkins但无效果。

配置问题分析

第一种配置的核心问题

  1. Server块匹配失败:配置中server_name设为jenkins.example.com,但实际访问用的是IP地址,导致该server块未被触发,Nginx使用默认server块处理请求,/jenkins路径未被代理。
  2. 转发路径不匹配:即使server块匹配成功,location /jenkins的proxy_pass指向http://jenkins,会将请求转发到http://192.168.0.37:8080/jenkins,但Jenkins默认根路径为/,未配置prefix时不存在该路径,返回404。

第二种配置的核心问题

proxy_pass直接指向http://192.168.0.37:8080/,与Jenkins配置的--prefix=/jenkins路径不匹配,导致转发请求到Jenkins的根路径,而非/jenkins路径。

解决方案

步骤1:确保Jenkins的prefix配置生效

在Ubuntu 22.04中,编辑Jenkins配置文件/etc/default/jenkins,修改JENKINS_ARGS行:

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=8080 --prefix=/jenkins"

重启Jenkins服务:

sudo systemctl restart jenkins

验证配置:直接访问http://192.168.0.37:8080/jenkins,若能正常打开Jenkins页面,说明prefix配置成功。

步骤2:修正Nginx代理配置

修改/etc/nginx/conf.d/jenkins.conf(或默认server块),确保转发路径与Jenkins的prefix对应:

server {
    listen 80;
    server_name 192.168.0.80;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }

    location /jenkins/ {
        proxy_pass http://192.168.0.37:8080/jenkins/;
        proxy_redirect off;
        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 websocket代理(用于agent连接)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /nexus/ {
        proxy_pass http://192.168.0.25:8081/;
        proxy_redirect off;
        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;
    }
}

关键说明:proxy_pass末尾添加/jenkins/,与location /jenkins/的路径完全对应,确保Nginx将/jenkins/xxx转发到Jenkins的/jenkins/xxx路径。

步骤3:验证Nginx配置并重启

检查Nginx配置语法:

sudo nginx -t

无错误后重启Nginx:

sudo systemctl restart nginx

额外排查步骤

  1. 若Jenkins配置prefix后仍无法直接访问,查看Jenkins启动日志:
sudo journalctl -u jenkins -f

排查是否有端口占用、配置加载失败等错误。
2. 若Nginx仍返回404,查看Nginx错误日志:

sudo tail -f /var/log/nginx/error.log

确认请求是否被正确转发到目标地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 02:33:12