我正在尝试访问后端的子路径,但是除了/api/之外,它似乎不适用于任何东西,比如/api/hello。
这是我的配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
# ADD ANNOTATION
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: example.com
http:
paths:
- path: /api(/|$)(.*)
# UPDATE PATH
pathType: Prefix
backend:
service:
name: server-srv
port:
number: 3000
- path: /
pathType: Prefix
backend:
service:
name: client-srv
port:
number: 3000当尝试访问/api中的子路径时,我将收到404 not。
任何帮助都是非常感谢的~!
发布于 2022-07-01 11:18:15
每个路径都需要有一个对应的路径类型。不包含显式pathType的路径将失败验证。
唯一支持的通配符是*字符。*字符必须在正斜杠(/)后面,并且必须是模式中的最后一个字符。例如,/、/foo/和/foo/bar/*是有效模式,但/foo/bar和/foo//bar不是,更特定的模式优先于较不特定的模式。如果同时具有/foo/和/foo/bar/,则会将/foo/bar/bat用于匹配/foo/bar/.有关路径限制和模式匹配的更多信息,请参见URL地图文档。
建议:尝试将路径命名为/api/*
其他参考文档:
https://github.com/kubernetes/ingress-nginx/issues/1120#issuecomment-322007251 服务
https://stackoverflow.com/questions/72557500
复制相似问题