首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes Nginx入侵删除部分URL

Kubernetes Nginx入侵删除部分URL
EN

Stack Overflow用户
提问于 2019-04-03 14:48:03
回答 2查看 4.1K关注 0票数 4

我在Kubernetes中部署了一个简单的应用程序(在AKS上),它位于使用Nginx的Ingress后面,使用Nginx头盔图进行部署。由于某种原因,Nginx似乎没有将完整的URL传递给后端服务,这是我遇到的问题。

例如,我的http://app.client.com是用/app1g的URL设置的,/app1g走向http://app.client.com/app1的路径很好。然而,如果我试图去http://app.client.com/app1/service1,我只是在http://app.client.com/app1,它似乎是剥夺了所有的路径后。

我的母老虎看起来是这样的:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
  creationTimestamp: "2019-04-03T12:44:22Z"
  generation: 1
  labels:
    chart: app-1.1
    component: app
    hostName: app.client.com
    release: app
  name: app-ingress
  namespace: default
  resourceVersion: "1789269"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/app-ingress
  uid: 34bb1a1d-560e-11e9-bd46-9a03420914b9
spec:
  rules:
  - host: app.client.com
    http:
      paths:
      - backend:
          serviceName: app-service
          servicePort: 8080
        path: /app1
  tls:
  - hosts:
    - app.client.com
    secretName: app-prod
status:
  loadBalancer:
    ingress:
    - {}

如果我转发到服务并直接点击它,它就能工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-03 15:18:59

所以我找到了答案。似乎从Nginxv0.22.0开始,就需要使用捕获组来捕获请求URI中的任何子字符串。在0.22.0之前,只使用nginx.ingress.kubernetes.io/rewrite-target: /对任何子字符串都有效。现在没有了。我需要用这个来验证我的入口:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  creationTimestamp: "2019-04-03T12:44:22Z"
  generation: 1
  labels:
    chart: app-1.1
    component: app
    hostName: app.client.com
    release: app
  name: app-ingress
  namespace: default
  resourceVersion: "1789269"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/app-ingress
  uid: 34bb1a1d-560e-11e9-bd46-9a03420914b9
spec:
  rules:
  - host: app.client.com
    http:
      paths:
      - backend:
          serviceName: app-service
          servicePort: 8080
        path: /app1/?(.*)
  tls:
  - hosts:
    - app.client.com
    secretName: app-prod
status:
  loadBalancer:
    ingress:
    - {}
票数 11
EN

Stack Overflow用户

发布于 2019-04-03 14:53:07

删除这一行应该可以修复您的问题:

代码语言:javascript
复制
nginx.ingress.kubernetes.io/rewrite-target: /

重写目标注释将按照它所说的那样做:重写您的请求以命中"/“位置。见用于重写目标的nginx-ingress文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55498027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档