热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KubernetesIngress路径优先级(ingressnginx)

我部署了2个基于angular的前端应用程序。我使用k8s.gcr.io/ingress-nginx/controller:v0.44.0具有以下配置的i

我部署了 2 个基于 angular 的前端应用程序。我使用k8s.gcr.io/ingress-nginx/controller:v0.44.0具有以下配置的ingress-nginx ( ) 将请求路由到这些应用程序:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: portal-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: app1
servicePort: 80
- path: /app2
backend:
serviceName: app2
servicePort: 80

当我点击/它时它路由到app1,但是当我点击/app2它时路由回app1。

回答


根据ingress-nginx 文档,它遵循的第一步是按长度降序对路径进行排序,然后将这些路径转换为 ​​nginx位置块。nginx 在这些块上遵循 first-match 策略。

在您的情况下,您可以提供两个路径,并且由于/app2长度超过/,它将首先写入 nginx 配置中。含义/app2将有机会首先被匹配(并将流量发送到app2),而其他所有内容都将转到app1。你不需要正则表达式来实现这一点。

代码:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: portal-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: app1
servicePort: 80
- path: /app2
backend:
serviceName: app2
servicePort: 80






推荐阅读
author-avatar
陈庭勇筱玲喜芳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有