天天看点

SpringCloud(十)zuul网关 路由url与service-id配置

在zuul中有两种路由配置:

1. 通过访问ip及端口号映射

2.通过服务名称映射

在上节代码基础上:

首先我把服务提供者与服务消费者都开了集群:

SpringCloud(十)zuul网关 路由url与service-id配置

先配置第一种:

更改网关application.yml

server:
  port: 8090
eureka:
  client:
    service-url:
      default-zone: http://localhost:8761/eureka
spring:
  application:
    name: zuul-service
zuul:
  routes:
    feign:
      path: /feign/**
      url: http://localhost:8085/      

通过path和url映射,访问path路径,直接访问到url对应的地址,这样显然不好,因为必须知道为服务的地址,并且集群的数量可能是动态扩展的,只实现了代理转发,不能实现负载均衡。其中/feign/*只代表一个路径,/feign/**代表下面多级路径

通过网关访问:

下面看第二种:

配置文件如下:

server:
  port: 8090
eureka:
  client:
    service-url:
      default-zone: http://localhost:8761/eureka
spring:
  application:
    name: zuul-service
zuul:
  routes:
    api-a:
      path: /feign/**
      service-id: eureka-feign
#zuul:
#  routes:
#    feign:
#      path: /feign/**
#      url: http://localhost:8085/      

既然注册到eureka上了,那就应该获取注册的服务信息,通过服务id访问微服务,用service-id把服务名称写在这里,并且还可以实现路由、熔段功能。

然后通过网关访问:

SpringCloud(十)zuul网关 路由url与service-id配置
SpringCloud(十)zuul网关 路由url与service-id配置

还有第三种:zuul.routes.服务名称: 访问路径

zuul:
  routes:
    eureka-feign: /feign/**      

若忽略某个微服务不走网关,则这样设置:

zuul:
    #忽略某个微服务
  ignored-services: eureka-feign      

forward跳转到本地url:

zuul.routes.api-a.path=/user/**
zuul.routes.api-a.url=forward:/user      

路由前缀:

zuul.prefix      

默认不生效,要想生效,​

​zuul.stripPrefix=false​

​ 把忽略前缀设置成false

zuul.routes.api-a.path=/user/**
zuul.routes.api-a.stripPrefix=false      

若想根据顺序,进行路由规则配置,必须用yml文件,不能用properties文件

zuul:
  routes:
    users:
      path: /user/**
    others:
      path: /**      

​​我的github地址​​

继续阅读