我正在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的适当主机,并相应地开始路由。
谢谢大家的帮助!这是多么漫长的一天啊:’(