Spring Cloud Zuul 中路由配置详解

首先我们平时写zuul路由可能会这样写

zuul:
  ignored-services: '*'
  routes:
    test1:
      path: /test1/**
      serviceId: zebra-test
    test2:
      path: /test2/**
      serviceId: zebra-test

当我的访问地址符合/test1/**规则的时候,会被自动定位到zebra-test服务上去,不过两行代码有点麻烦,我们可以用下面一行代码来代替,如下:

zebra-test: /test3/**

zuul.routes后面跟着的是服务名,服务名后面跟着的是路径规则,这种配置方式显然更简单。

 

如果映射规则我们什么都不写,系统也给我们提供了一套默认的配置规则,默认的配置规则如下:

  zuul.routes.zebra-test.path=/zebra-test/**
  zuul.routes.zebra-test.serviceId=zebra-test

默认情况下,Eureka上所有注册的服务都会被Zuul创建映射关系来进行路由,我们可以禁用默认路由,只认配置的路由

ignored-services: '*'

还有我们定义路由规则/test1/**的时候,为什么最后面是两个*,一个可不可以呢?当然可以,不过意义可就不一样了,Zuul中的路由匹配规则使用了Ant风格定义,一共有三种不同的通配符:

通配符含义
?匹配任意单个字符
*匹配任意数量的字符
**匹配任意数量的字符

我们也可以统一的为路由规则增加前缀,设置方式如下:

zuul:
  prefix: /api

我们在使用Nginx的时候,会涉及到一个请求头信息的配置,防止页面重定向后跳转到上游服务器上去,这个问题在Zuul中一样存在,假设我的feign-consumer中提供了一个接口/hello4,当访问/hello4接口的时候,页面重定向到/hello,默认情况下,重定向的地址是具体的服务实例的地址,而不是API网关的跳转地址,这种做法会暴露真实的服务地址,所以需要在Zuul中配置,配置方式很简单,如下:
表示API网关在进行请求路由转发前为请求设置Host头信息。

zuul:
  add-host-header: true

默认情况下,敏感的头信息无法经过API网关进行传递,我们可以通过如下配置使之可以传递,可以写在顶层也可以写在具体哪一个服务:

zuul:
  sensitiveHeaders:

如果我们想关闭Hystrix重试机制,可以通过如下方式:

关闭全局重试机制:

zuul:
  retryable: false

关闭某一个服务的重试机制:

zuul:
  routes:
    feign-consumer:
      retryable: false

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值