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/**

 

posted @ 2019-09-24 11:18  lkc9  阅读(237)  评论(0编辑  收藏  举报