Nginx转发jenkins
最近搭建了一个jenkins服务,原本是通过域名加端口号的方式访问
想着已经有个web服务配置到了Nginx中,直接把jenkins也配置到Nginx中吧,让jenkins的访问方式是localhost/jenkins
下面是我直接配置转发以及出现的问题,并且找到了解决方案
直接配置jenkins的location
下面是我最初的Nginx的配置,在Server块中增加了一个location,定位jenkins的路径
http {
# 省略其他配置
server {
listen 80;
server_name localhost 10.1.1.11;
location / {
root /usr/share/nginx/html/itcp;
index index.html index.html;
try_files $uri $uri/ /index.html;
}
location ^~ /apis/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_uri ~ ^/apis/(.*)$) {
proxy_pass http://10.1.1.11:9999/$1;
}
}
location ^~ /jenkins {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.1.1.11:38888/jenkins;
}
}
}
Nginx配置完成后打开网址一试,发现所有的css, js什么的都存在问题,仔细一找原因,发现这个文件都是通过绝对路径定义的,也就是类似abc.css会被链接到http://abc.ap.example.net/abc.css而不是我们期望的http://abc.ap.example.net/jenkins/abc.css,相对路径变成绝对路径当然会出错,这个也不是nginx能够左右的,还好Jenkins支持部署到二级目录,我们只需要在启动的时候加一个参数就可以了:
java -jar jenkins.war --httpPort=38888 --prefix=/jenkins

浙公网安备 33010602011771号