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)
从文档中复制并粘贴:
此外,您必须确保 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):
Run Code Online (Sandbox Code Playgroud)JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=/jenkins"
配置完成后,您还应该在Jenkins > 管理 Jenkins > Jenkins 位置 > Jenkins URL中将 Jenkins UI 使用的 URL 设置为:“ https://domain.tld/jenkins/。