1.引入Zuul依赖spring-cloud-starter-netflix-zuul
2.配置文件:
eureka.client.serviceUrl.defaultZoo=http://localhost:8100/eureka #服务注册url地址
server.port=80 # 网关端口号
spring.application.name=service-zuul # 网关名称
zuul.routes.api-a.path=/api-ticket/** #当客户端发送请求127.0.0.1:80/api-ticket/开头的,都会被发送到app-ticket服务中
zuul.routes.api-a.serviceId=app-ticket # ticket服务别名,zuul整合ribbon默认自动实现负载均衡效果
zuul.routes.app-b.path=/api-user/** # 当客户端发送请求127.0.0.1/api-user/开头的,都会被发送到app-user服务中
zuul.routes.app-b.serviceId=app-user # app-b定义转发规则
3.在类上标注@EnableZuulProxy注解开启网关代理
1.创建过滤器类继承ZuulFilter
2.获取上下文
3.获取Request对象
4.从请求头中获取token
5.创建过滤器执行逻辑
6.实现ZuulFilter中的方法:
过滤类型:filterType() pre-表示在请求之前执行.
过滤器执行顺序:filterOrder() 当一个请求在同一阶段存在多个过滤器的时候,规定多个过滤器的执行顺序
判断过滤器是否生效:shouldFilter()
传统方式将路由规则配置在配置文件中,如果路由地址发生了改变,需要重启服务器
在微服务中应该将路由规则配置在SpringCloud Config分布式配置中心,实现动态路由规则.
配置SpringCloud Config分布式配置中心的实时刷新
1.在host中配置域名
2.在Nginx配置文件中配置上游服务器(upstream),默认实现负载均衡
3.在过滤器中调用网关接口