子目录中 nginx 反向代理后面的 Jenkins

use*_*975 1 nginx reverse-proxy jenkins

我正在努力在 nginx 后面的子目录中设置 Jenkins。有 2 个应用程序在本地主机上运行。其中之一是 jenkins,可以通过访问 foo.com/jenkins 进行访问。另一个应用程序位于 foo.com/ 上。

对詹金斯的请求不能有前缀/jenkins/,因此我重写(删除)它。但是,尽管 jenkins 的初始页面已加载,但所有资源(js、css...)都丢失了,并且网站看起来很丑陋。原因似乎是请求没有 jenkins 前缀并被重定向到其他应用程序(请参阅屏幕截图中的链接)。

如何将请求从詹金斯页面路由到正确的处理程序?

server {
    listen 80;
    server_name foo.com;  

    # jenkins server in subdir:      
    location ^~ /jenkins/ {
       rewrite ^/jenkins(.*) /$1 break;
       proxy_pass http://127.0.0.1:9500/;
    }
    # main app:
    location / {
        proxy_pass http://127.0.0.1:8081;
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ger*_*der 5

从文档中复制并粘贴:

此外,您必须确保 Jenkins 配置为侦听 /jenkins/ 文件夹的请求(例如http://10.0.0.100:8080/jenkins/而不是http://10.0.0.100:8080/)。通过将参数--prefix=/jenkins添加到 Jenkins 默认启动配置文件来实现此目的。在我的系统(Ubuntu 12.04 LTS)上,配置文件是/etc/default/jenkins。例如,这是完整的 JENKINS_ARG 参数列表(我添加的唯一部分是--prefix=/jenkins):

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=/jenkins"
Run Code Online (Sandbox Code Playgroud)

配置完成后,您还应该在Jenkins > 管理 Jenkins > Jenkins 位置 > Jenkins URL中将 Jenkins UI 使用的 URL 设置为:“ https://domain.tld/jenkins/