我正在将nginx反向代理与入口对象一起使用,以将我的请求路由到kubernetes pod。
使用以下配置,当我向LB URL http://myservices.myorg.com/jenkins发出请求时
我的请求将发送到http://myservices.myorg.com/login?from=%2F 但我希望它转到http://myservices.myorg.com/jenkins/login?from=%2F
因此,在我手动替换为上述正确路径之后,所有诸如css,js之类的资源都以错误的路径呈现为http://myservices.myorg.com/static/beacae7e/css/simple-page.css
但必须为http://myservices.myorg.com/jenkins/static/beacae7e/css/simple-page.css
类似地,登录后(我认为是http POST方法),它将转到主页(在浏览器中,它从
http://myservices.myorg.com/jenkins/login至
http://myservices.myorg.com/jenkins
但是再次渲染的所有资源的路径都错误(没有/ jenkins)- http://myservices.myorg.com/static/beacae7e/css/layout-common.css
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myingress
spec:
rules:
- host: myservices.myorg.com
http:
paths:
- path: /jenkins
backend:
serviceName: jenkins
service port: 80
下面是nginx.conf-
http {
server {
listen 80;
server_name ip-10-118-6-35.ec2.internal;
location /jenkins {
proxy_pass https://backend_nodes_jenkins/;
}
}
upstream backend_nodes_jenkins {
server 10.102.194.242:80;
}
}
正如您在nginx.conf中看到的那样,在proxy_pass中,我在URL的末尾加了斜杠,因为我不应该将/ jenkins传递给我的pod。
所以这按预期工作,但唯一的问题是get请求正在重写我相信的网址。请帮忙。
答案 0 :(得分:1)
通过在docker CMD中传递env变量来解决它-JENKINS_OPTS =“-prefix = / jenkins”