我有以下入口服务配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-svc
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: localhost
http:
paths:
- path: /backend
backend:
service:
name: backend-svc
port:
number: 4000
pathType: Prefix
- path: /?(.*)
backend:
service:
name: web-svc
port:
number: 8080
pathType: Prefix
我转发端口,以便可以通过 localhost:3000 访问集群,但看起来当我尝试访问 localhost:3000/backend 时,我路由到 web-svc 并获得 404 状态代码,而不是路由到后端 svc 正如预期的那样。不过,当我删除对 web-svc 的引用时,我可以很好地路由到后端服务。我该如何解决?谢谢。
目前,
path /?(.*)
匹配所有路径,包括/backend
,这就是为什么对/backend
的请求被路由到web-svc
。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-svc
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: localhost
http:
paths:
- path: /backend
backend:
service:
name: backend-svc
port:
number: 4000
pathType: Prefix
- path: /.*
backend:
service:
name: web-svc
port:
number: 8080
pathType: Prefix
使用此配置,对
/backend
的请求将被路由到 backend-svc
,所有其他路径将被路由到 web-svc
。