(1)在 javaboycloud 项目中新创建一个 Spring Boot 项目 zuul 作为项目的 moudle。
(2)添加 Spring Web、Eureka Discovery Client、Zuul 依赖
(3)配置 application.properties
spring.application.name=zuul server.port=2020 eureka.client.service-url.defaultZone=http://localhost:1111/eureka (4)zuul 服务启动类加 注解,开启网关代理 @SpringBootApplication @EnableZuulProxy public class ZuulApplication { public static void main(String[] args) { SpringApplication.run(ZuulApplication.class, args); } } (5)启动 eureka 服务端、provider 服务和 zuul 服务 (6)测试正常不通过网关访问 provider 服务 hello 接口 http://localhost:1113/hello (7)通过网关代理访问 provider 服务 hello 接口 (8)结论: 直接访问:http://localhost:1113/hello 网关访问:http://localhost:2020/provider/hello 默认:网关的 IP 端口/ eureka 目标服务名/目标服务接口名(9)路由规则也可以自己配置,比如: spring.application.name=zuul server.port=2020 eureka.client.service-url.defaultZone=http://localhost:1111/eureka zuul.routes.javaboy-a.path=/javaboy-a/** zuul.routes.javaboy-a.service-id=provider重启 zuul服务,访问
出了原有的直接访问 provider 服务和通过默认地址中加 provider 服务名访问成功外,/ java-a / hello 也能访问成功,自定义路由规则生效
(10)上面的更改路由规则配置代码可以更精简, spring.application.name=zuul server.port=2020 eureka.client.service-url.defaultZone=http://localhost:1111/eureka zuul.routes.provider=/javaboy-a/**好了先写这么多,话说 Zuul 使用起来真简单,原理:Zuul 和 其他服务都注册都 Eureka 上面了, Zuul 能拿到整个服务列表,Zuul 代理的地址栏中,有要访问的服务名(如 provider),也有要访问的接口(如 hello),所以就能找到目标服务接口了。