1.pom.xml依赖
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency></dependencies>
2.启动类 @EnableZuulServer 过滤器没有 @EnableZuulProxy 完善
@SpringCloudApplication
@EnableZuulProxy
public class ZuulApplication {public static void main(String[] args) {SpringApplication.run(ZuulApplication.class);}
}
配置文件
1.面向url配置
server:port: 10010
zuul:routes:hehe:path: /user/**url: http://127.0.0.1:8084
1.rote 定义网关规则 ( 一个map 结构的 键为字符串 可以是随意的) hehe 是一个 键
2. 当 浏览器请求 127.0.0.1:10010/user/ user/1 时就会 匹配到path 这个路径 就会把后面 user/1拼接到 url后面 再转发访问
3.这样配置方式 写的太死(url地址) , 应该用eureka 那样 可以拉取一个服务列表 请求
2.面向服务配置
1. 引入依赖
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies>
2.配置文件
server:port: 10010
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka
zuul:routes:user-server: 习惯将这个写为 服务idpath: /user-server/**serviceId: user-server 拉取服务列表的id名称
1.当浏览器请求 http://localhost:10010/user-server/ user/1 就匹配到 path 然后将 user/1 拼接到 拉取的服务列表的一个实例
简化写法一 : 根据user-server/ ** 匹配访问路径 转发到 user-server这个服务
zuul:routes:user-server: /user/**
2.注意: 当使用 面向服务配置 时,就会默认 拉取 列表中的所有 服务 所以当你存在一个微服 id为 consumer-server 时 ,有一个
Controller 是 consumer/1 时 http://localhost:10010/consumer-server/ consumer/1 也能访问 默认以服务 id 匹配前缀
但是我们自己配置了 匹配路径 为 /user/** 所以默认的 user-server就不能访问了 必须是 http://localhost:10010/user/user/1
3.为避免拉取所有 微服 所以可以配置 哪些忽律 拉取 可以是一个列表形式的
zuul:routes:user-server: /user-server/**ignore-service: - consumer-server
4.访问时每次都要加一个匹配前缀 我们可以 不去掉这个前缀
zuul:routes:user-server:path: /user/**serviceId: user-serverstrip-prefix: false
直接 访问 http://localhost:10010/ user/1 时 匹配到/user/ 然后不去掉这个匹配到的前缀 拉取服务列表后直接拼接在后面
5.全局配置访问 需要的前缀 所有访问前都必须有 http://localhost:10010/ api/ user/1 访问
zuul:routes:user-server:path: /user/**serviceId: user-serverstrip-prefix: falsestrip-prefix: falseprefix: /api