戳蓝字“CSDN云计算”关注我们哦!
作者:爱撒谎的男孩
原文:https://chenjiabing666.github.io/2018/12/25/zuul%E6%9C%8D%E5%8A%A1%E7%BD%91%E5%85%B3/
本文系读者投稿,已获作者原创授权。
如果你有好文章,可以戳这里投稿。
Zuul
简介
Zuul包含了对请求的路由和过滤两个主要的功能,其中路由功能负责将外部的请求转发到具体的微服务实例上,是实现外部访问统一入口的基础上,而过滤功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。
Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获取其他微服务的信息,也即以后访问微服务都是通过Zuul跳转后获得。
代理+路由+过滤三大功能。
使用
需要和Eureka客户端结合使用,依赖如下:
|
|
添加配置,将其注册到eureka中,如下:
|
|
在主启动类上添加@EnableZuulProxy
这个注解,如下:
|
|
启动即可,在eureka中看到注册进入即可
之后只需要通过zuul访问其他的微服务提供者即可,比如服务提供者的实例名称为dept-provider
,那么通过zuul访问的路径为
http://localhost:9001/dept-provider/dept/1
路由映射规则
代理名称
之前的配置访问的还是需要带上微服务的实例名称,但是我们不想微服务的实例名称暴露,那么此时就需要使用代理名称替代,配置如下:
使用
ignored-services
忽略真实的服务名称访问,可以同时指定多个,其中服务名称必须和服务配置文件中一样。在routes下指定多个路由映射规则。
|
|
按照上面的配置完成之后就可以直接使用映射的路由访问即可,如:
http://zuul.com:9001/api-order/order/1
设置统一前缀
我们可以在所有的访问uri前面加上统一的前缀,配置如下:
使用zuul.prefix
加上统一的前缀即可
|
|
通过上面的配置,此时的访问路径变成
http://zuul.com:9001/chenjiabing/api-order/order/1
某个uri取消路由
使用zuul.ignored-services
是忽略一个或者多个微服务的全部接口,但是如果我们可以更细化
如果我们需要隐藏一些敏感的接口不给访问,我们可以在yml文件中配置,如下:
|
|
传递敏感头信息
默认zuul是不能传递头信息的,比如cookie,默认的设置了三个字段,如下:
|
|
如果我们想让它不过滤,只需要将其设置为空,或者不配置其他的,如下:
将
sensitive-headers
这个值设置为空即可这个配置只是针对
order-provider
这个微服务起作用
|
|
上面的配置是针对单个服务的设置,我们也可以配置针对所有的服务,如下:
|
|