Zuul

是什么

 

zuul 路由配置

zuul:

#ignored-services: microservicecloud-dept #忽略指定服务的访问路径

prefix: /caisebei # 指定前缀

ignored-services: "*" # 忽略所有的服务 (多个微服务之间使用逗号隔开,再配置routes 就是配置指定的微服务可以被代理)

routes:

microservice-provider-user: /user/** #自定义微服务的访问路径

mydept.serviceId: microservicecloud-dept # 设置单个微服务

mydept.path: /mydept/**

配置了之后访问时就是 http://myzuul.com:9527/caisebei/mydept/dept/get/2

http:域名:ip/prefix/routes.path/ restAPI

 

同时指定微服务的serviceId 和对应的路径。例如

zuul:

routes:

user-route: #该配置方式中,user-route 只是给路由一个名称,可以任意起名。

service-id : micorservice-provider-user

path: /user/** #service-id 对应的路径

同时指定path 和url

zuul:

routes:

user-route: #该配置方式中,user-route 只是给路由一个名称,可以任意起名。

url : http://locahost:8000

path: /user/** #service-id 对应的路径

这样就可以将 /user/** 映射到http://localhost:8000/**

需要注意的是,使用这种方式配置的路由不会作为HystrixCommand 执行,同时也不能使用Ribbon 来负载均衡多个URL ,下例可以解决该问题

zuul:

routes:

user-route: #该配置方式中,user-route 只是给路由一个名称,可以任意起名。

path: /user/** #service-id 对应的路径

service-id : microservice-provider-user

ribbon :

eureka:

enabled: false # 为Ribbon 禁用Eureka

microservice-provider-user:

ribbon:

listOfServers: localhost:8000, localhost:8001

这样可以即指定rul 和path 又不破坏Zuul 的Hystrix 与Ribbon 特性了

 

忽略某些路径

上述有怎么忽略掉某个/某些服务,有时可能需要更细粒度的控制,想让zuul 代理某个微服务,同时又想保护该微服务的某些敏感词,可以使用ignored-Patterns 指定忽略的正则:

zuul:

ignoredPatterns: /**/admin/**

routes:

microservice-provider-user : /user/**

 

可以通过com.netflix 日志级别设为DEBUG 这样zuul 会打印转发的细节

logging:

level:

com.netflix: DEBUG

 

Zuul 的安全与Header

敏感header

同一个系统中的服务之间共享Header ,不过应该避免一些敏感的Header 外泄。

zuul:

routes:

microservice-provider-user:

path: /users/**

sensitive-headers: Cookie,Set-Cookie,Authorization

url : https://downstream

 

也可以使用zuul.sensitive-headers 全局指定敏感Header,例如:

zuul:

sensitive-headers: Cookie,Set-Cookie,Authorization #默认设置的为Cookie, Set-Cookie,Authorization 需要注意的是使用了上一种敏感配置方式,全局配置的方式会被覆盖

忽略Header:

zuul:

ignored-headers : Header1, Header2 # 这两个header 不会传播到其他的微服务中(上述的敏感header 最终会添加到忽略的header 中)

 

Zuul 上传文件

对于小文件(1M以内)无需任何处理,对于大文件需要为上传路径添加/zuul 前缀

如果zuul 使用了Ribbon做负载均衡,那么对于超大的文件(例如500M),需要超时设置:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:60000

ribbon:

ConnectTimeout:3000

ReadTimeout:60000

使用zuul 上传过大的文件的时候需要加上前缀/zuul

可以在linux 中使用curl -F "file=@src.zip" 192.168.115.1:8040/zuul/microservice-file-upload/upload 上传文件进行服务器相关的测试.

Zuul 的过滤器:

PRE: 在请求被路由之前调用(身份认证,集群中选择请求的微服务,记录调试信息)

ROUTING: 这种过滤器将请求路由到微服务(用于构建发送给微服务的请求,并使用HttpClient 或Ribbon 请求)

POST: 路由到微服务后执行(为响应添加标准的HTTP Header , 收集统计信息和指标,将响应从微服务发送给客户端)

ERROR: 在其他阶段发生错误的时候执行该过滤器

 

禁用过滤器:

zuul.<SimpleClassName>.<filterType>.disable=true 即可禁用相应的过滤器

 

 

标注: 感谢 周立 微服务实战相关书籍

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值