配置Nginx反向代理Jenkins后跳转登录页出现404,求排查原因
问题原因及解决方案
你的配置问题出在Nginx的proxy_pass路径匹配上,导致转发到Jenkins的请求路径不正确,最终出现404错误。
具体错误点
Jenkins已经通过--prefix=/jenkins设置了根路径前缀,意味着Jenkins的所有资源都挂载在/jenkins路径下(比如登录页实际是http://localhost:8080/jenkins/login)。但你的Nginx配置中,location /jenkins下的proxy_pass http://localhost:8080会截断请求路径:
- 访问
http://VM1_IP/jenkins时,Nginx转发到http://localhost:8080 - 跳转登录页时,Jenkins返回的跳转地址是
/jenkins/login,但Nginx再次转发时会变成http://localhost:8080/login,而Jenkins并没有这个路径,因此返回404。
修正后的Nginx配置
修改proxy_pass,加上/jenkins后缀,确保请求路径完整转发:
server { listen 80; server_name VM1_IP; location /jenkins { proxy_pass http://localhost:8080/jenkins; 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静态资源的缓存问题 proxy_cache_bypass $http_upgrade; } }
额外注意事项
- 重启Jenkins,确保
--prefix=/jenkins的配置生效 - 进入Jenkins后台的「系统管理→系统设置」,检查并设置
Jenkins URL为http://VM1_IP/jenkins,避免后续跳转路径错误
内容的提问来源于stack exchange,提问作者Roma Onyshkiv
相关产品推荐
相关产品推荐

