Spring Cloud 微服务网关配置多个 predicates 断言
Spring Cloud 微服务框架测试一些暴露出来的 API 接口,发现测试站可以执行,但到了正式站却被拒绝了:
Failed to handle request [POST http://xxx/path/api/xxx]
而一些其他的请求,如:[POST http://xxx/path/to/xxx]
是可以正常访问的。也就是说正式站拒绝了非 /path/to
路由的请求。
反馈给之前负责的同事,才知道原来是在网关配置了断言(会限制路由访问):
- id: app-id
uri: lb://app-id
predicates:
- Path=/path/to/**
filters:
- StripPrefix=1
- name: Retry
args:
retries: 1
测试站只所以没有被拦截,是因为使用了 ip 直接访问业务应用,没有经过网关。而正式站使用域名,且有多台服务器做负载,需要网关配置转发。
所以现在需要增加 /path/api/**
路由即可。百度 predicates 参数如何配置多个 path,得到只需要增加英文逗号分隔就好。最终的网关配置:
- id: app-id
uri: lb://app-id
predicates:
- Path=/path/to/**,/path/api/**
filters:
- StripPrefix=1
- name: Retry
args:
retries: 1