Skip to content
Yasin Shaw edited this page Aug 28, 2018 · 1 revision

URL转发

Zuul路由不仅可以转发微服务,还可以转发到其它网址或者Zuul本身提供的接口。如下配置:

 zuul:
  routes:
    first:
      path: /first/**
      url: http://first.example.com # 到其它网址
    second:
      path: /second/**
      url: forward:/second # 到Zuul本身定义的接口

文件上传

文件上传分两种情况。如果是小文件上传,则按普通的路由转发规则。而如果是大文件上传, 需要加上/zuul/*前缀。这样做的目的是可以绕过Spring的DispatcherServlet,为了避免多段处理。如果你集成了Ribbon,那么需要对Ribbon进行超时设置:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
ribbon:
  ConnectTimeout: 3000
  ReadTimeout: 60000

需要注意的是,如果你想使用“流式”上传你的文件,那么需要在请求的header里面加上:

Transfer-Encoding: chunked

查询参数加密

当前端的查询参数过来时,查询参数字符串会被Zuul decode。然后会被Zuul 重新encode。它可能与最初的encode字符串不完全一样。

可以通过以下配置关掉:

 zuul:
  forceOriginalQueryStringEncoding: true

需要的是这个配置只对SimpleHostRoutingFilter有效。

@EnableZuulServer

如果你在启动类上面配置的是@EnableZuulServer注解而不是@EnableZuulProxy注解,你可以没有代理功能的Zuul Server。它不会自动加入有关代理的filters,而其它filters仍然会自动加载进去。

这种情况下,Zuul不再具有服务发现和代理功能。

关闭某个过滤器

Zuul实质上是由一系列的过滤器组成。你可以通过zuul.<SimpleClassName>.<filterType>.disable=true来关掉某个过滤器。比如:

zuul.SendResponseFilter.post.disable=true

Sidebar

Clone this wiki locally