但在实际项目中,往往需要自己定义路由规则,Zuul的路由配置非常灵活、简单,本节详细讲解Zuul的路由配置。
  
  一、自定义指定微服务的访问路径
  
  配置zuul.routes.指定微服务的serviceId = 指定路径 即可。例如:
  
  zuul:
  
  routes:
  
  microservice-provider-user: /user/**
  
  这样设置,microservice-provider-user微服务就会被映射到/user/**路径。
  
  二、忽略指定微服务
  
  忽略服务非常简单,可以使用zuul.ignored-services 配置需要忽略的服务,多个用逗号分隔。例如:
  
  zuul:
  
  ignored-services: microservice-provider-user,microservice-consumer-movie
  
  这样就可让Zuul忽略microservice-provider-user和microservice-consumer-movie微服务,只代理其他微服务。
  
  三、忽略所有微服务,只路由指定的微服务
  
  很多场景下,我们可能只想要让Zuul代理指定的微服务,此时可以将zuul.ignored-services 设为’*’
  
  zuul:
  
  ignored-services: '*' # 使用'*'可忽略所有微服务
  
  routes:
  
  microservice-provider-user: /user/**
  
  这样就可以让Zuul只路由microservice-provider-user微服务。
  
  四、同时指定微服务的serviceId和对应路径
  
  例如:
  
  zuul:
  
  routes:
  
  user-route: # 该配置方式中,user-route只是给路由一个名称,可以任意起名。
  
  service-id: microservice-provider-user
  
  path: /user/** # service-id对应的路径
  
  本例配置的效果同示例(1)。
  
  五、同时指定path和URL,例如:
  
  zuul:
  
  routes:
  
  user-route: # 该配置方式中,user-route只是给路由一个名称,可以任意起名。
  
  url: http://localhost:8000/ # 指定的url
  
  path: /user/** # url对应的路径。
  
  这样就可以将/user/** 映射到http://www.mingheyl178.com/ localhost:8000/** 。
  
  需要注意的是,使用这种方式配置的路由不会作为HystrixCommand执行,同时也不能使用Ribbon来负载均衡多个URL。例(6)可解决该问题。
  
  六、同时指定path和URL,并且不破坏Zuul的Hystrix、Ribbon特性。
  
  zuul:
  
  routes:
  
  user-route:
  
  path: /user/**
  
  service-id: microservice-provider-user
  
  ribbon:
  
  eureka:
  
  enabled: false
  
  microservice-provider-user:
  
  ribbon:
  
  listOfServers: localhost:8000,localhost:8001
  
  这样就可以既指定path与URL,又不破坏Zuul的Hystrix与Ribbon特性了。
  
  七、使用正则表达式指定Zuul的路由匹配规则
  
  借助PatternServiceRouteMapper,实现从微服务到映射路由的正则配置。例如:
  
  @Bean
  
  public PatternServiceRouteMapper serviceRouteMapper() {
  
  // 调用构造函数PatternServiceRouteMapper(String servicePattern, String routePattern)
  
  // servicePattern指定微服务的正则
  
  // routePattern指定路由正则
  
  return new PatternServiceRouteMapper( www.lezongyule.com"(?<name>^.+)-(?<version>v.+$)", "${version}/${name}");
  
  }
  
  通过这段代码即可实现将诸如microservice-provider-user-v1这个微服务,映射到/v1/microservice-provider-user/**这个路径。
  
  八、路由前缀
  
  示例1:
  
  zuul:
  
  prefix: /api
  
  strip-prefix: false
  
  routes:
  
  microservice-provider-user: /user/**
  
  这样,访问Zuul的/api/microservice-provider-user/1路径,请求将会被转发到microservice-provider-user的/api/1
  
  示例2:
  
  zuul:
  
  routes:
  
  microservice-provider-user:
  
  path: /user/**
  
  strip-prefix: false
  
  这样访问Zuul的/user/1路径,请求将会被转发到microservice-provider-user的/user/1
  
  TIPS:
  
  ① 可参考该Issue辅助理解: https://www.michenggw.com github.com/spring-cloud/spring-cloud-netflix/issues/1365
  
  九、忽略某些路径
  
  上文我们讲解了如何忽略微服务,但有时我们还需要更细粒度的路由控制。例如,我们想让Zuul代理某个微服务,同时又想保护该微服务的某些敏感路径。此时,可使用ignoredPatterns,指定忽略的正则。例如:
  
  zuul:
  
  ignoredPatterns: /**/admin/** # 忽略所有包含/admin/的路径
  
  routes:
  
  microservice-provider-user:www.fengshen157.com/ /user/**
  
  这样就可将microservice-provider-user微服务映射到/user/**路径,但会忽略该微服务中所有包含/admin/的路径。
  
  小技巧
  
  读者如无法掌握Zuul路由的规律,可将com.netflix包的日志级别设为DEBUG。这样,Zuul就会打印转发的具体细节,从而帮助我们更好地理解Zuul的路由配置,例如:
  
  logging:
  
  level:
  
  com.netflix: DEBUG

跟我学Spring Cloud(Finchley版)-17-Zuul路由配置详解的更多相关文章

  1. Spring Cloud:使用Ribbon实现负载均衡详解(下)

    在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...

  2. spring cloud 2.x版本 Zuul路由网关教程

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...

  3. spring基于通用Dao的多数据源配置详解【ds1】

    spring基于通用Dao的多数据源配置详解 有时候在一个项目中会连接多个数据库,需要在spring中配置多个数据源,最近就遇到了这个问题,由于我的项目之前是基于通用Dao的,配置的时候问题不断,这种 ...

  4. 一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)

    上一章节,我们讲解了服务网关zuul,本章节我们从git和本地两种存储配置信息的方式来讲解springcloud的分布式配置中心-Spring Cloud Config. 一.Spring Cloud ...

  5. Spring Cloud Finchley版中Consul多实例注册的问题处理

    由于Spring Cloud对Etcd的支持一直没能从孵化器中出来,所以目前来说大多用户还在使用Eureka和Consul,之前又因为Eureka 2.0不在开源的消息,外加一些博眼球的标题党媒体使得 ...

  6. Spring Cloud:使用Ribbon实现负载均衡详解(上)

    1. 什么是 Ribbon? Spring Cloud Ribbon 是一套实现客户端负载均衡的工具.注意是客户端,当然也有服务端的负载均衡工具,我们后面再介绍.可以认为 Ribbon 就是一个负载均 ...

  7. Spring MVC配置文件的三个常用配置详解

    转自:http://www.cnblogs.com/benwu/articles/5162614.html Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和appl ...

  8. Spring之旅第四篇-注解配置详解

    一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会有错的. 上一篇Spring的配置博客 ...

  9. Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解

    原文地址:  https://blog.csdn.net/shinebar/article/details/54408020 引言: 在Http请求中,我们每天都在使用Content-type来指定不 ...

随机推荐

  1. 有关Laravel 4 的 Homestead 安装部署的细节

    对于Vagrant,我是相见恨晚的.有时候抽出几个小时的时间学会一种工具,对于将来可以节省几十甚至几百小时的时间. Vagant最大的好处就是节省了安装配置运行环境的时间,统一开发环境,同时可以最大限 ...

  2. shell 判断日期间隔及润年

    #!/bin/bash test.sh until echo "----------------------------------" echo "请输入您的选择:&qu ...

  3. 622.设计循环队列 javascript实现

    设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为“环形缓冲器”. 循环队列的一个好处是我们可以利用这个队列 ...

  4. DX孟虎点评新兴市场:巴西俄罗斯火爆背后

    [亿邦动力网讯]4月3日消息,在第九届中国中小企业电子商务大会暨2014中国(河南)跨境贸易电子商务峰会上,DX公司CEO孟虎对新兴市场做了详细的分析,指出在当今的跨境电商环境下,北美.西欧作为电商成 ...

  5. 20181120-4 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 01

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2409 版本控制地址   https://git.coding.net/lg ...

  6. 欢迎来怼--第三十次Scrum会议

    一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/18 17:20~17:53,总计33min. 地 ...

  7. 软件工程-东北师大站-第五次作业(PSP)

    1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图

  8. vim 编码方式的设置

    和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux 世界的软件一样,这需要 ...

  9. t2

    测评项目 : 福大助手 组长博客链接:https://www.cnblogs.com/dawnduck/p/10093752.html 第一部分:调研,评测 评测 1. 第一次上手体验 安卓: 进入页 ...

  10. KMP---POJ 3461 Oulipo

    Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without t ...