Ingress Nginx的Regex路径匹配



我正在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错误。所以我知道它连接到我设置的服务。

我不知道我哪里出了问题——如何解决这个问题,因为我是直接从文档中复制的。任何帮助或见解都将是伟大的。提前谢谢!

编辑1:我从路径中删除了regex,并注释掉了/api/auth路径,因此不应向auth-srv发送任何请求。由于某种原因,所有请求都会路由到auth-srv,即使没有映射到它。注意:auth和coms-pods/service都在后台运行,只是ingress nginx仍然没有正确路由。

所以这没有正确路由的原因是:

- host: app.dev
- http:

"-"在";http";使得控制器认为这是其自己的规则集,因此以下路由具有大量"规则集"*&";。在我删除"-"在";http";,规则被设置为app.dev的适当主机,并相应地开始路由。

谢谢大家的帮助!这是多么漫长的一天啊:’(

相关内容

  • 没有找到相关文章

最新更新