Zuul
1. 概述
- Zuul包含了对请求的路由和过滤两个最主要的功能
- Zuul和Eureka进行整合, 将Zuul自身注册为Eureka服务治理下的应用, 同时从Eureka中获得其他微服务的信息, 也即以后的访问微服务是通过Zuul跳转后获得
- Zuul服务最终还是回注册进Eureka
- 提供: 代理 + 路由 + 过滤 三大功能
2. 使用Zuul
1. 导入依赖
由于Zuul要注册到Eureka中, 因此需要同时导入Eureka和Zuul的依赖
<!--Eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!--Zuul-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
2. 配置Zuul
server:
port: 9527
spring:
application:
name: springcloud-zuul
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: zuul_9572.com
prefer-ip-address: true
info:
app.name: wang-springcloud
company.name: wangStudy.com
zuul:
routes:
mydept:
serviceId: springcloud-provider-dept
path: /mydept/**
# ignored-services: springcloud-provider-dept #不能再使用这个路径访问了
ignored-services: "*" #隐藏全部的真实服务名
prefix: /wang #设置公共的访问前缀
我们这里使用9527端口
注意
- Zuul要注册到Eureka中, 因此要配置服务名以及Eureka发现
- 在zuul的配置中, serviceId属性指定一个微服务的名字, path指定这个微服务被zuul重定向后的位置, 这样就可以实现隐藏我们微服务的真实的名称
- 在zuul的配置中, ignored-services表示要隐藏的服务, 指定了某个服务之后, 就不能用真实的服务名访问了, 提高了安全性. 我们可以用 "*" 通配符来隐藏全部的微服务名称
- 在zuul的配置中, prefix指定了前缀, 一旦设定了前缀, 必须加上前缀才能访问
3. 配置主启动类
package com.wang.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
//开启Zuul
@EnableZuulProxy
public class ZuulApplication_9527 {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication_9527.class, args);
}
}
在启动类上加上 @EnableZuulProxy 注解即可使Zuul生效
3. 测试
为了使得访问更加真实, 我们在hosts中将localhost配置为了www.wangStudy.com
发现, 访问 http://www.wangstudy.com:9527/wang/mydept/dept/list 可以得到预期的结果
而访问不带前缀或者直接访问微服务的名称, 则会报告404错误