上面分别详细介绍了 Zuul 的配置,以下是一份 Spring Cloud 集成 Zuul 1.x 的较为完整的 application.yml 配置示例。其中,包含了路由、超时、负载均衡等多方面常见配置,并附有相应的说明信息:
server: # Zuul服务启动的端口号,可根据实际需求修改 port: 8080 spring: application: # Zuul应用的名称 name: zuul-gateway zuul: # 路由配置相关 routes: # 路由名称,自定义,方便识别 # 如果路由名称和服务名称相同,则可以省略 serviceId 配置 user-service-route: # 外部请求访问的路径前缀,以 /user-api 开头的请求会被路由 # 默认情况下,path 为 “/服务名/**” path: /user-api/** # 对应要转发到的服务名称(在 Eureka 等注册中心注册的服务名) serviceId: user-service order-service-route: path: /order-api/** # 也可以直接指定具体的URL(不推荐用于微服务架构中多实例场景,这里只是示例) url: http://localhost:8081 # 忽略的服务列表(不会被 Zuul 路由管理的服务) # '*' 表示忽略所有在注册中心的服务,也可以指定具体的服务名称列表。 # 例如 ignored-services: service1,service2 ignored-services: '*' # 只路由指定的服务(和 ignored-services 相反逻辑)。 # 如果配置了此选项,那么只有配置中的服务会被路由,例如 # 仅仅路由 user-service 和 order-service 服务 only-route-services: user-service,order-service # 路由前缀,给所有路由添加统一的前缀,例如 # 那么所有路由的实际访问路径都要加上 /api 开头, # 像 /user-api/xxx 实际访问就变成了/api/user-api/xxx prefix: /api # 敏感请求头设置(默认会过滤一些敏感头信息,比如 Cookie、Authorization 等, # 在转发时不传递,以下配置可自定义) # 清空默认的敏感头列表,可根据实际需求配置具体要过滤的头信息 sensitive-headers: # 示例,仅转发 Cookie 和 Authorization 这两个头信息 # sensitive-headers: Cookie,Authorization # 控制默认连接池属性的主机属性 host: # Zuul在尝试连接后端服务时的超时时间,单位是毫秒 connect-timeout-millis: 10000 # 从连接请求发出到获取到连接的最长等待时间,单位是毫秒 connection-request-timeout-millis: 20000 # 限制Zuul到每个后端服务路径(路由)所能建立的最大连接数 max-per-route-connections: 50 # 限制Zuul与所有后端服务总共能够建立的最大连接数 max-total-connections: 200 # 定义了Zuul在与后端服务建立连接后,等待读取数据的超时时间,单位是毫秒 socket-timeout-millis: 60000 # 指定连接池中的连接的生存时间 time-to-live: 1 # 指定连接池中的连接的生存时间的单位 time-unit: DAYS # 自定义过滤器相关配置示例(假设自定义了一个名为MyFilter的过滤器, # 在代码中实现了 ZuulFilter 接口) filter: pre: MyFilter: # 过滤器名称,要和代码中定义的一致 order: 1 # 过滤器执行顺序,数字越小越先执行 disable: false # 是否禁用该过滤器,false表示启用 # 配置负载均衡相关(结合Ribbon使用,以下以user-service服务为例) user-service: # 对应服务名称 ribbon: # 服务实例列表,多个实例用逗号隔开,这里是示例的本地地址, # 实际应是对应服务的真实实例地址 listOfServers: http://localhost:8081,http://localhost:8082 # 负载均衡规则,这里采用轮询规则,还有其他规则可按需选择,如RandomRule(随机)等 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule ribbon: eager-load: enabled: true # 开启ribbon的饥饿加载,加快首次请求的响应速度 clients: user-service,order-service # 指定哪些服务开启饥饿加载 # Hystrix相关配置(用于容错降级等) hystrix: command: default: execution: isolation: thread: # 全局的Hystrix线程超时时间,超过这个时间会触发熔断降级, # 可根据服务实际情况调整 timeoutInMilliseconds: 6000 # 配置HTTP客户端相关(可选不同的HTTP客户端实现, # 默认是Apache HttpClient,也可以用OkHttp等) # 使用OkHttp示例(需添加相应依赖) okhttp: enabled: true # 启用OkHttp客户端
点击下载/查看本教程相关资料或者源代码。