背景


在服务器上部署了一个jenkins,由于其他项目的存在,所以使用的是Nginx做反向代理,但是每次访问jenkins管理界面都会抛出一个报错,看着有点闹心,想把它解决掉:

An error message is displayed in the “Manage Jenkins” page - “It appears that your reverse proxy set up is broken”

出现这个错误以后,我们点击更多信息,进到官网的解释,看以看到有这么一个警告:

Be sure to set the X-Forwarded-Proto header if your reverse proxy is accessed via HTTPS and then Jenkins itself is accessed via HTTP i.e. proxying HTTPS to HTTP. 这句话的大概意思是: 如果你的反向代理使用https访问,并且jenkins使用http访问,是代理https到http,那么就一定要设置X-Forwarded-Proto这个请求头。

解决


所以需要调整Nginx中反向代理的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 443;
server_name jenkins.lemonlzy.cn.;
location / {
proxy_pass http://localhost:8001;
proxy_read_timeout 90;
proxy_set_header X-Forwarded-Host $host:$server_port;
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;
proxy_set_header X-Real-IP $remote_addr;
}
}

修改配置后重启Nginx服务即可。