SpringCloudGateway路由转发顺序控制;路由规则;查看所有路由规则
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloudGateway路由转发顺序控制;路由规则;查看所有路由规则相关的知识,希望对你有一定的参考价值。
需求
路由在转发的时候难免有些条件冲突,不定义一下顺序的话可能转发到错误的服务上去,导致404.
查看所有路由规则
配置完之后访问
http://localhost:网关端口/actuator/gateway/routes
就能看到所有的路由信息了
management:
endpoint:
gateway:
enabled: true
endpoints:
web:
exposure:
include: gateway
路由转发顺序控制
配置order
参数控制路由之间的顺序,默认的order
都是0
spring:
cloud:
# Spring Cloud Gateway 配置项,对应 GatewayProperties 类
gateway:
# 路由配置项,对应 RouteDefinition 数组
routes:
# 产品模块指向本地
- id: xxx-xxx-xxx
uri: http://192.168.0.239:9205
order: -1
predicates:
- Header=routeenv, dev
- Path=/product/**
filters:
- StripPrefix=1
路由规则
url从注册中心获取并负载均衡
predicates指定header,使用正则匹配
filters.StripPrefix去掉路由的指定数量路径
比如
StripPrefix=1
网关转发请求 /aaa/bbb/xxx -> /bbb/xxx
StripPrefix=2
网关转发请求 /aaa/bbb/xxx -> /xxx
spring:
cloud:
# Spring Cloud Gateway 配置项,对应 GatewayProperties 类
gateway:
# 路由配置项,对应 RouteDefinition 数组
routes:
# 产品模块指向本地
- id: xxx-xxx-xxx
#lb代表负载均衡
#uri: lb://cloud-product
uri: http://192.168.0.239:9205
order: -1
predicates:
- Header=routeenv, dev
- Path=/product/**
filters:
- StripPrefix=1
编码定义路由规则
有时候需要硬编码来实现路由规则
直接来个Demo
package com.xxx.xxx.xxx;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class GatewayConfig
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder)
RouteLocatorBuilder.Builder routes = builder.routes();
routes.route("cf", r ->
return r
//控制顺序
.order(-2)
//匹配路径
.path("/product/**")
//过滤
.filters(f -> f.stripPrefix(1))
//转发目标服务
.uri("http://192.168.0.239:9205");
);
return routes.build();
以上是关于SpringCloudGateway路由转发顺序控制;路由规则;查看所有路由规则的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloudGateway手动编写路由规则对请求进行转发
SpringCloudGateway手动编写路由规则对请求进行转发
SpringCloudGateway手动编写路由规则对请求进行转发