Spring Cloud gateway + nacos 微服务流量转发配置最佳实践

版本信息

gateway: 2.2.6.RELEASE nacos: 1.4.1

先看几组参数:

gateway自动代理nacos上已注册服务

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true

gateway手动代理内部服务

如果不使用上面的配置进行自动代理,怎么通过gateway访问一个内部微服务呢?例如:

spring:
  cloud:
    gateway:
	   route:
	   	     - id: microService-xx_route
		  uri: lb://microService-xx
		  predicates:
			- Path=/microService-xx/**
		  filters:
			- StripPrefix=1
		  order: 10001

这里:

以上区别是什么?

spring:
  cloud:
    gateway:
	   route:
		  - id: rewritepath_xx_to_newXX_route1
		  uri: lb://microservice-new-xx
		  predicates:
			- Path=/microservice-xx/list/**
		  filters:
			- RewritePath=/microservice-xx/list/(?<segment>.*), /microservice-new-xx/list/${
          
   segment}
			- StripPrefix=1
		  order: 1

这里的意思是当命中/microService-xx/list/**路径时,通过filters的规则将microservice-xx/list的流量转到/microservice-new-xx/list/,其服务名为lb://microservice-new-xx。

几个注意事项:

    order提供的顺序,需要排在微服务选择前面,如果在微服务选择后面,规则不会生效 目前测试出来,一个filters只能有一条路径重写规则,如果能实现多条规则,在下面评论告知 不能使用自动代理nacos的服务名,即第一条所写的配置,目测原因是自动代理的代码执行优先级更高

参考资料: https://juejin.cn/post/7170933034248732703

经验分享 程序员 微信小程序 职场和发展