Zuul路由的strip-prefix与order

因为目前的Spring Cloud的中文资料真的很少,stripPrefix,先来了解一下什么是Prefix,有一个叫zuul.prefix,

zuul.prefix=/api
  
用户微服务和eureka已经起好了,看一下prefix是干嘛用的

localhost:8040/api/microservice-simple-provider-user/simple/1

前缀加上用户微服务的id,微服务的路径,prefix是干这个用的,stripPrefix是干嘛用的呢,

选项默认是true

 zuul:
  routes:
    users:
      path: /myusers/**
      stripPrefix: false

zuul.strip-prefix=false
zuul.routes.user-route.stripPrefix=false

剥掉前缀,设置成false,

localhost:8040/api/microservice-simple-provider-user/simple/1

这个路径访问不了

是把api/这个去掉吗

localhost:8040/microservice-simple-provider-user/simple/1

也访问不了,我们借助日志

loggin.level.com.netflix=debug

logging.level.com.learn=trace
logging.file=springboot.log
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n

我们看他请求到了什么地址,我们访问这个

localhost:8040/api/microservice-simple-provider-user/simple/1

看到请求到哪里

zuul.prefix=/simple
zuul.stripPrefix=false


localhost:8040/simple/microservice-simple-provider-user/simple/1

也就是zuul代理的微服务的前缀,homePage是7900,有的微服务可能设置了context-path,

localhost:7900/simple/1

zuul.prefix=/simple

localhost:8040/simple/microservice-simple-provider-user/simple/1

zuul.prefix=/simple
zuul.stripPrefix=true

https://github.com/spring-cloud/spring-cloud-netflix/issues/1365

zuul.stripPrefix=false not work for all route? #1365

zuul.stripPrefix specifically applies to zuul.prefix. zuul.routes.<route>.stripPrefix 

applies to zuul.routes.<route>.path

 zuul:
  ignoredPatterns: /**/admin/**
  routes:
    users: /myusers/**

忽略某些敏感的路径

 zuul:
  ignoredServices: '*'
  routes:
    users: /myusers/**

ignoredServices是粗粒度的忽略,他忽略的整个微服务

https://blog.csdn.net/kevin_loving/article/details/80661259

ignoredPatterns这个就可以做到更细粒度的忽略,忽略某些路径,这样配这里解释的很好,

https://cloud.spring.io/spring-cloud-netflix/reference/html/#_ignored_headers

The preceding example means that all calls (such as /myusers/101) are forwarded to /101 

on the users service. However, calls including /admin/ do not resolve.

 zuul:
  ignoredPatterns: /**/admin/**
  routes:
    users: /myusers/**
	
 zuul:
  routes:
    users:
      path: /myusers/**
    legacy:
      path: /**

users下是/myusers/**这么玩的,剩下的是/**这么玩的,叫legacy路由,你想利用rule的order,所谓的优先级了,

现在优先级是什么,order是什么,你得用yaml,否则这个特性玩不起来

If you were to use a properties file, the legacy path might end up in front of the users path, 

rendering the users path unreachable.

所有的路由都讲到这里
server.port=8040
spring.application.name=microservice-gateway-zuul-reg-exp
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
eureka.client.serviceUrl.defaultZone=http://admin:1234@10.40.8.152:8761/eureka
eureka.instance.appname=microservice-gateway-zuul-reg-exp
#zuul.prefix=/api
#zuul.routes.user-route.stripPrefix=false
zuul.prefix=/simple
zuul.stripPrefix=true
logging.level.com.learn=trace
logging.file=springboot.log
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd} ==== [%thread] %-5level ==== %logger{50} ==== %msg%n

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值