Nginx反向代理URL被重写

时间:2019-02-11 14:35:39

标签: nginx jenkins reverse-proxy kubernetes-ingress nginx-ingress

我正在将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请求正在重写我相信的网址。请帮忙。

1 个答案:

答案 0 :(得分:1)

通过在docker CMD中传递env变量来解决它-JENKINS_OPTS =“-prefix = / jenkins”