Spring Cloud Zuul 中路由配置详解
程序员文章站
2022-07-12 19:11:07
...
首先我们平时写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
推荐阅读
-
详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失
-
详解Spring Cloud负载均衡重要组件Ribbon中重要类的用法
-
详解Spring Cloud Gateway基于服务发现的默认路由规则
-
Spring Cloud Zuul的重试配置详解
-
Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!
-
详解Spring Cloud Eureka多网卡配置总结
-
详解基于Spring Cloud几行配置完成单点登录开发
-
JSP Spring中Druid连接池配置详解
-
JSP 中spring事务配置详解
-
[Spring cloud 一步步实现广告系统] 6. Service实现&Zuul配置&Test