Kubernetes Nginx入口控制器缺少路径

Kubernetes Nginx入口控制器缺少路径,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我对Nginx入口控制器有两个定义。它们中的每一个都路由到web应用程序(托管在nginx上的React应用程序)和web api(.Net Core)的服务 第一个工作正常,但它很复杂,因为我需要在etc文件中为每个指定的主机添加条目以使其工作: apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-nginx-controller annotations: kubernetes.io/in

我对Nginx入口控制器有两个定义。它们中的每一个都路由到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重写,但没有成功。

如果要保留请求的路径,需要删除
nginx.ingres.kubernetes.io/rewrite-target:/$2
注释。

根据:

在此入口定义中,
(.*)
捕获的任何字符都将被删除 分配给占位符
$2
,然后在中用作参数 重写目标注释

i、 例如,注释正在重定向
http://testapp/testapp-web-dev/manifest.json
http://testapp/manifest.json