Nginx 如何处理具有两个后端的kubernetes入口规则

Nginx 如何处理具有两个后端的kubernetes入口规则,nginx,kubernetes,kubernetes-ingress,nginx-ingress,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,我尝试使用两个后端容器运行我的web应用程序 /应该路由到前端容器 以/backend/开头的所有内容都应转到后端容器 很好,很好,但是现在没有加载来自/backend的css&js文件,因为这些文件在HTML文件中被引用,如“/bundles/css/style.css”,现在ingress controller将此请求路由到前端容器,而不是后端 如何解决此问题 我能用智能入口规则解决这个问题吗 是否需要更新后端容器的应用程序根目录 这里是我的入口资源 apiVersion: netw

我尝试使用两个后端容器运行我的web应用程序

  • /应该路由到前端容器
  • 以/backend/开头的所有内容都应转到后端容器
很好,很好,但是现在没有加载来自/backend的css&js文件,因为这些文件在HTML文件中被引用,如“/bundles/css/style.css”,现在ingress controller将此请求路由到前端容器,而不是后端

如何解决此问题

  • 我能用智能入口规则解决这个问题吗
  • 是否需要更新后端容器的应用程序根目录
这里是我的入口资源

apiVersion: networking.k8s.io/v1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
 name: example
 namespace: example
 annotations:
   kubernetes.io/ingress.class: "nginx"
   cert-manager.io/cluster-issuer: "letsencrypt-prod"

   nginx.ingress.kubernetes.io/rewrite-target: /$2

spec:
 tls:
 - hosts:
   - www.example.ch
   secretName: tls-example.ch
 rules:
 - host: www.example.ch
   http:
     paths:
     - path: /backend(/|$)(.*)
       pathType: Prefix
       backend:
         service:
           name: example-backend-svc
           port:
             number: 8081
     - path: /
       pathType: Prefix
       backend:
         service:
           name: example-frontend-svc
           port:
             number: 8080

如果所有文件都位于/bundles/*路径中,则可以添加另一个路径。 我在下面给出了一个清单文件示例

apiVersion: networking.k8s.io/v1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
 name: example
 namespace: example
 annotations:
   kubernetes.io/ingress.class: "nginx"
   cert-manager.io/cluster-issuer: "letsencrypt-prod"

   nginx.ingress.kubernetes.io/rewrite-target: /$2

spec:
 tls:
 - hosts:
   - www.example.ch
   secretName: tls-example.ch
 rules:
 - host: www.example.ch
   http:
     paths:
     - path: /backend(/|$)(.*)
       pathType: Prefix
       backend:
         service:
           name: example-backend-svc
           port:
             number: 8081
     - path: /bundles
       pathType: Prefix
       backend:
         service:
           name: example-backend-svc
           port:
             number: 8081
     - path: /
       pathType: Prefix
       backend:
         service:
           name: example-frontend-svc
           port:
             number: 8080

如果所有文件都位于/bundles/*路径中,则可以添加另一个路径。 我在下面给出了一个清单文件示例

apiVersion: networking.k8s.io/v1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
 name: example
 namespace: example
 annotations:
   kubernetes.io/ingress.class: "nginx"
   cert-manager.io/cluster-issuer: "letsencrypt-prod"

   nginx.ingress.kubernetes.io/rewrite-target: /$2

spec:
 tls:
 - hosts:
   - www.example.ch
   secretName: tls-example.ch
 rules:
 - host: www.example.ch
   http:
     paths:
     - path: /backend(/|$)(.*)
       pathType: Prefix
       backend:
         service:
           name: example-backend-svc
           port:
             number: 8081
     - path: /bundles
       pathType: Prefix
       backend:
         service:
           name: example-backend-svc
           port:
             number: 8081
     - path: /
       pathType: Prefix
       backend:
         service:
           name: example-frontend-svc
           port:
             number: 8080