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

posted @ 2025-03-22 11:12  明月,  阅读(192)  评论(0)    收藏  举报