Nginx二级目录转发Jenkins
最近要搭建一个Jenkins
的服务,不过公司只能给分配一个二级域名,这个域名已经被别的服务占用,因此只能通过二级目录的方式通过代理的方式实现Jenkins
服务。
目前的情况是abc.ap.example.net
是公司分配的一个域名,当前域名下已经有相应的服务,我们希望在abc.ap.example.net/jenkins
上部署Jenkins
,当然前提是已有的服务和这个二级目录不冲突。
Nginx
本身是一个非常强大也非常灵活的软件,配置个二级目录也非常简单:
server {
listen 80;
server_name abc.ap.example.net;
access_log /var/log/nginx_abc.access.log;
error_log /var/log/nginx_abc.error.log;
# 二级目录转发
location /jenkins {
proxy_pass http://localhost:8889/jenkins;
port_in_redirect on;
proxy_redirect http://localhost:8889 $scheme://example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
# 以下是原有的服务
location / {
proxy_pass http://localhost:8888;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
}
Nginx
配置完成后打开网址一试,发现所有的css
, js
什么的统统404了,仔细一找原因,发现这个文件都是通过绝对路径定义的,也就是类似abc.css
会被链接到http://abc.ap.example.net/abc.css
而不是我们期望的http://abc.ap.example.net/jenkins/abc.css
,相对路径变成绝对路径当然会出错,这个也不是nginx能够左右的,还好Jenkins
支持部署到二级目录,我们只需要在启动的时候加一个参数就可以了:
java -jar jenkins.war --httpPort=8889 --prefix=/jenkins
通过--prefix=/jenkins
我们可以定义所有链接的前缀,也就实现了二级目录的部署。
同样的我们还可以加个minio
的部署,这个是原生支持二级目录部署的,咔咔。
location /minio {
proxy_pass http://localhost:9000/minio;
port_in_redirect on;
proxy_redirect http://localhost:8889 $scheme://example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
OK,就酱。
最后更新于 2018-11-08 02:15:05 并被添加「」标签,已有 5140 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。