我正在经历看起来像配置问题!我在kubernetes中使用traefik作为入口控制器,我有一个入口来路由一些URL以将一些前端路由到各种后端 . 假设我有这样的事情:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: ReplacePathRegex
spec:
rules:
- host: foo.io
http:
paths:
- path: /api/authservice/(.*) /$1
backend:
serviceName: auth
servicePort: 8901
- path: /api/svcXXX/v1/files/cover/(.*) /v1/files/cover/$1
backend:
serviceName: files
servicePort: 8183
- path: /api/svcXXX/v1/files/image/(.*) /v1/files/image/$1
backend:
serviceName: files
servicePort: 8183
使用Postman(或任何其他客户端),如果我在 http://foo.io/api/authservice/auth/oauth/token
上发布请求,同时查看访问日志,它似乎被路由到 http://foo.io/api/svcXXX/v1/files/image/(.*) /v1/files/image/$1
. 我在访问日志中看到了这一点:
[03/Jul/2018:12:57:17 +0000] "POST /api/authservice/auth/oauth/token HTTP/1.1" 401 102 "-" "PostmanRuntime/7.1.5" 15 "foo.io/api/svcXXX/v1/files/image/(.*) /v1/files/image/$1" 37ms
难道我做错了什么 ?
1 回答
ReplacePathRegex
是 modifier 规则 . 根据documentation:要路由请求,您应该使用matchers:
可以找到完整的匹配器列表及其描述here