我有应用程序“test.abc.com“。我想在不同的服务之间传输请求。
示例或预期输出
- 当用户点击
test.abc.com
--〉时,它将转到abc-demo-frontend-external
服务 - 当用户点击
test.abc.com/main.js
或test.abc.com/main.css
或任何.css/ .js文件--〉时,将转到abc-demo-frontend
服务
我添加了以下配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-demo-frontend-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: 'false'
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: "test.abc.com"
http:
paths:
- path: /[^\/#?]+\.(?:css|js)(?![^\/?#])
pathType: ImplementationSpecific
backend:
service:
name: abc-demo-frontend
port:
number: 80
- path: /
pathType: ImplementationSpecific
backend:
service:
name: abc-demo-frontend-external
port:
number: 80
添加[^\/#?]+\.(?:css|js)(?![^\/?#])
路径后,我得到503,为什么?
当我添加下面路径时,我得到503,为什么?
- path: /[^\/#?]+\.(?:css|js)(?![^\/?#])
pathType: ImplementationSpecific
backend:
service:
name: abc-demo-frontend
port:
number: 80
1条答案
按热度按时间jdzmm42g1#
spec.rules.http.paths.path
中用于K8s ingress-nginx的正则表达式应符合RE 2引擎语法;看这里。看起来你正在使用的正则表达式不符合RE 2引擎语法。用https://github.com/google/re2/wiki/Syntax中支持的语法检查一下。因此,您的ingress-nginx pod应该还没有准备好。pod没有准备好应该是导致503 -服务不可用问题的原因。请尝试根据RE 2语法更新Regex,然后再次检查。