当前位置: 代码迷 >> 综合 >> Spring-cloud Zuul 网关路由
  详细解决方案

Spring-cloud Zuul 网关路由

热度:59   发布时间:2023-12-24 03:45:52.0

   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

 

  相关解决方案