Spring Cloud入门 (5) - 微服务集群网关Zuul
1、Zuul介绍
Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是一系列的过滤器
2、路由配置
1)简单路由
处理简单路由的过滤器为 SimpleHostRoutingFilter
tips:要触发简单路由,需要配置的url 的值以 http: 或者 https: 开头
- 使用 path 和 url:
zuul:
routes:
routeTest: # 路由的Id,随便起就行
path: /routeTest/163
url: http://www.163.com
以上配置访问 http://{ip}:{port}/routeTest/163 就会跳转到163网站
- 默认情况下使用 routeId 作为 path , 以下省略了 path 配置:
zuul:
routes:
route163:
url: http://www.163.com
以上配置访问 http://{ip}:{port}/route163 就会跳转到163网站
2)跳转路由
处理跳转路由的过滤器为 SendForwardFilter
zuul:
routes:
helloRoute:
path: /test/**
url: forward:/source/hello
访问 http://{ip}:{port}/test/jack 会跳转到路由 http://{ip}:{port}/source/hello/jack
3) Ribbon 路由
通过配置 serviceId 将请求转发到集群服务中
zuul:
routes:
sale: # 路由 id ,自己随便定义即可
serviceId: zuul-sale-service
path: /sale/**
当访问 http://{ip}:{port}/sale/sale-book/22 相当于向 Ribbon 发出 http://zuul-sale-service/sale-book/22
- 默认情况下,使用 routeId 作为 serviceId ,所以上面配置等同于:
zuul:
routes:
zuul-sale-service:
path: /sale/**
注意:
简单路由,如果 url 的值不是以 http: 或者 https: 开头,并且不以 forward: 开头,那么将会执行 Ribbon 路由过滤器,将 url 看作是一个 serviceId
所以,上述配置又等价于:
zuul:
routes:
sale:
url: zuul-sale-service
path: /sale/**
3、忽略某些路径
我们想让Zuul代理某个微服务,同时又想保护该微服务的某些敏感路径。此时,可使用ignoredPatterns,指定忽略的正则。
zuul:
ignoredPatterns: /**/admin/** # 忽略所有包含/admin/的路径
routes:
provider-user: /user/**