zuul网关 路由url与service-id配置

    科技2024-06-26  63

    在zuul中有两种路由配置:

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

    2.通过服务名称映射

     

    在上节代码基础上:

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

     

    先配置第一种:

    更改网关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把服务名称写在这里,并且还可以实现路由、熔段功能。

     

    然后通过网关访问:

     

    还有第三种: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地址

     

    Processed: 0.009, SQL: 8