【问题标题】:Kubernetes Nginx Ingress Controller missing pathKubernetes Nginx Ingress Controller 缺少路径
【发布时间】:2021-03-05 13:59:29
【问题描述】:

我对 Nginx Ingress Controller 有两个定义。它们每个都路由到 web 应用程序(在 nginx 上托管的 React 应用程序)和 web api(.Net Core)的服务。

首先工作很好,但是很麻烦,因为我需要在每个指定主机的 etc 文件中添加条目以使其工作:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx-controller
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: testapp-web-dev
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: testapp-portal-web-service
                port:
                  number: 80
    - host: testapp-api-dev
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: testapp-portal-api-service
                port:
                  number: 80

我决定将其修改为具有多个路径的单个主机,因此我将在 etc 文件中只有一个条目。但它不起作用。第一个请求被正确路由到 http://testapp//testapp-web-dev 但每隔一个 请求失败,即清单请求转到 http://testapp/manifest.json 但它应该转到 http://testapp/testapp-web-dev/manifest.json。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx-controller
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - host: testapp
      http:
        paths:
          - path: /testapp-web-dev(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: testapp-portal-web-service
                port:
                  number: 80
          - path: /testapp-api-dev(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: testapp-portal-api-service
                port:
                  number: 80

尝试了几个不同的 url 重写但没有运气。

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    如果要保留请求的路径,需要去掉nginx.ingress.kubernetes.io/rewrite-target: /$2注解。

    根据Nginx Ingress Rewrite

    在这个入口定义中,(.*) 捕获的任何字符都将是 分配给占位符$2,然后将其用作参数 重写目标注解。

    即注解将http://testapp/testapp-web-dev/manifest.json重定向到http://testapp/manifest.json

    【讨论】:

      猜你喜欢
      • 2021-05-15
      • 1970-01-01
      • 2019-02-24
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多