如何解决Ingress-Nginx 的正则表达式路径匹配
我正在 kubernetes 中使用 ingress-Nginx 来设置服务器。 问题是路径根本没有路由,我从 Nginx 服务器收到 404 错误。 以下是我的入口代码:
apiVersion: networking.k8s.io/v1
kind: Ingress
Metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: Nginx
Nginx.ingress.kubernetes.io/use-regex: "true"
spec:
# defaultBackend:
# service:
# name: auth-srv
# port:
# number: 3000
rules:
- host: app.dev
- http:
paths:
- pathType: Prefix
path: /api/auth/?(.*)
backend:
service:
name: auth-srv
port:
number: 3000
- path: /api/coms/?(.*)
pathType: Prefix
backend:
service:
name: coms-srv
port:
number: 3000
如果我取消对默认后端服务的注释,我会收到响应,但一旦我删除它,我就会收到 404 Nginx 错误。所以我知道它连接到我设置的服务。
我不知道我哪里出错了如何解决这个问题,因为我直接从 docs 复制。任何帮助或见解都会很棒。提前致谢!
编辑 1: 我从路径中删除了正则表达式并注释掉了 /api/auth 路径,因此没有请求应该发送到 auth-srv。出于某种原因,即使没有映射到 auth-srv,所有请求也会路由到它。注意:auth 和 coms pods/services 都在后台运行,只是 ingress-Nginx 仍然没有正确路由。
解决方法
所以这不能正确路由的原因是:
- host: app.dev
- http:
“http”前面的“-”让控制器认为这是它自己的规则集,所以下面的路由有一个“*”的主机。删除“http”前面的“-”后,规则被设置到app.dev的正确主机上,并相应地开始路由。
感谢大家的帮助!这是多么漫长的一天:')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。