SpringCloud Gateway配置自定义路由404坑

一、场景复现

微服务自定义路由,返回404页面。

①如图:

(1)springcloud-gateway的路由设置

@Configuration
public class RouteConfig {@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route("test", r -> r.path("/csdn/**").uri("https://blog.csdn.net")).route("micro-service", r -> r.path("/micro-service/**").uri("lb://micro-service")).build();}
}

(2)micro-service的controller

@RestController
public class TestController {@GetMapping("/test")public String test(HttpServletRequest request){return "hello world, uri:" + request.getRequestURI();}}

(3)nacos注册中心

(4)请求CSDN生效

猜测应该是lb路由不生效,于是改成yaml试试

 

 

二、route改为yaml配置

(1)配置/micro-service/**则有效②

访问结果:

(2)配置/micro/**则访问无效

访问/micro/test 404:

无意中访问/micro-service/test有结果③:

访问/micro-service1/test 抛异常:

 

三、反思现象

(1)深探问题

访问配置的路由404,访问注册的服务名有结果,访问不存在的路由则报错。非常郁闷,究竟哪里配置错误了。

猜测肯定是访问到了micro-service,但为什么没用结果。于是给micro-service服务配置默认路径,才发现原因

@RestController
public class TestController {@GetMapping("/test")public String test(HttpServletRequest request){return "hello world, uri:" + request.getRequestURI();}@GetMapping("/**")public String defaultPath(HttpServletRequest request){return "hello world, uri:" + request.getRequestURI();}
}

/micro/test请求有结果,如下: 

转发的路径多了/micro,带多一级路径转发了。

(2)查看gateway的说明文档

1)发现path和PrefixPath 的区别

path是带匹配路径转发请求,需要StripPrefix来截掉匹配模式不转发。

PrefixPath是不转发匹配的模式。

gateway path这里跟zuul的默认去掉匹配模式路径不一样,被zuul误导了。

2)gateway自动服务注册发现路由

①问题是没有gateway网关自动服务注册发现路由,通过编码的RouteLocator设置带前缀请求404

②问题是yaml配置加载后,配置了gateway网关自动服务注册发现路由,覆盖了yaml的配置,所以能访问成功

③问题是配置了gateway网关自动服务注册发现路由

 

 

四、解决方案

(1)使用服务注册自动发现路由

  cloud:gateway:discovery:locator:enabled: truelower-case-service-id: true

(2)path路由加去掉前缀信息

  cloud:gateway:routes:- id: micro-serviceuri: lb://micro-servicepredicates:- Path=/micro-service/**filters:- StripPrefix=1

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Actor-ES框架:Ray-Handler之ToReadHandler编写

如图右上角所示,Ray中有两类Handler(SubHandler和PartSubHandler),在使用中,SubHandler派生Actor的CoreHandler,PartSubHandler派生SQLToReadHandler,SQLToReadHandler派生Actor的ToReadHandler&#xff0c…

SpringCloud Zuul(十)之配置路由prefix坑

一、场景复现 配置prefixapi访问/api/micro-service/test接口404 (1)zuul配置 zuul:strip-prefix: true #转发路径截断匹配前缀prefix: "api"add-proxy-headers: falseset-content-length: truesemaphore:max-semaphores: 600 (…

在Firefox 58中,WebAssembly组件性能提升了10倍

Mozilla在Firefox 58中为WebAssembly(WASM)组件推出了一套双层编译系统,号称解析和编译WASM代码的速度达到30-60MB/s,足够在有线网络中实现实时编译。基准测试表明,新版的性能比旧版提高了10倍,比Chrome快1…

SpringCloud Zuul(九)之路由自动刷新原理

一、现象 发布新服务,然后在数据库配置了路由,使用服务路径访问404。然后重新发布新的服务,就可以继续访问得到 (1)配置了路由第一次访问 (2)重新发布后访问 二、分析 (1&#xf…

dotnetcore+vue+elementUI 前后端分离 三(前端篇)

说明:本项目使用了 mysql employees数据库,使用了vue axois element UI 2.0 ,演示了 单页程序 架构 ,vue router 的使用,axois 使用,以及 element UI 控件的使用。通过这几种技术的组合,实现了对 employee 的增&…

SpringCloud Greenwich(一)注册中心之nacos、Zuul和 gateway网关配置

本项目是搭建基于nacos注册中心的springcloud,使用zuul网关和gateway网关。 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (2)环境 nacos 1.4.1…

欢乐ssl暑假赛【2019.8.6】

前言 莫得前言 成绩 JJJ表示初中,HHH表示高中后面加的是几年级,只放前10 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDDEEE111(J−3)WYC(J-3)WYC(J−3)WYC500500500100100100100100100100100100100100100100100100222(H−1)QYH(H-1)QYH(H…

Actor-ES框架:Ray-Handler-消息订阅器编写

消息订阅器:Ray是基于Event Sourcing设计的ES/Actor框架,消息发布后需要订阅处理,订阅器主要有以下两类:CoreHandler消息订阅器RabbitSubSubHandlerToReadHandler消息订阅器RabbitSubSQLToReadHandler(ToReadHandler的…

Actor-ES框架:Actor编写-ESGrain与ESRepGrain

ESGrain生命周期Ray中ESGrain继承自Grain扩展了Grain的生命周期。Grain的生命周期参加文档附录:1-Grain生命周期-译注.mdESGrain重写了Grain的OnActivateAsync方法。ESGrain的初始化过程如下:初始化ESGrain中的State调用ReadSnapshotAsync()读快照。如果…

DotNetAnywhere:可供选择的 .NET 运行时

我最近在收听一个名为DotNetRock 的优质播客,其中有以Knockout.js而闻名的Steven Sanderson 正在讨论 " WebAssembly And Blazor "。也许你还没听过,Blazor 正试图凭借WebAssembly的魔力将 .NET 带入到浏览器中。如果您想了解更多信息&#xf…

SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置

本项目是搭建基于consul注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (2)环境 consul 1.9.0…

Actor-ES框架:消息发布器与消息存储器

消息发布器:Ray是基于Event Sourcing设计的ES/Actor框架,ESGrain状态(State)的修改、ESGrain之间的通信默认使用RabbitMQ通信。消息的发布器主要是RabbitPubESGrain。RabbitPub特性RabbitPub特性是RabbitMQ消息发布器。RabbitSub特…

consul的安装搭建

一、下载consul consul官网下载地址:https://www.consul.io/downloads 旧版本下载 consul 1.9.3直接下载地址: consul_1.9.3_windows_amd64.zip consul_1.9.3_linux_amd64.zip 二、安装 将consul_1.9.3_xxx.zip解压的xxx/consul目录 (1&…

使用xUnit为.net core程序进行单元测试

一. 导读为什么要编写自动化测试程序(Automated Tests)?可以频繁的进行测试可以在任何时间进行测试,也可以按计划定时进行,例如:可以在半夜进行自动测试。肯定比人工测试要快。可以更快速的发现错误。基本上…

jzoj6276-[Noip提高组模拟1]树【线段树,扫描线,倍增】

正题 题目大意 一棵树,若干个点对,求不包括任何一个点对的路径数量。 解题思路 我们考虑将不合法的方案在坐标系上表示。 我们先只考虑一个点对(x,y)(x,y)(x,y),若xxx和yyy没有祖先关系,则不合法的路径一个点在xxx的子树中&…

SpringCloud Greenwich(三)注册中心之zookeeper、Zuul和 gateway网关配置

本项目是搭建基于zookeeper注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (2)环境 zookeeper…

Metrics, tracing 和 logging 的关系

译者注Peter Bourgon原作: Metrics, tracing, and logging译者:吴晟原作发表时间: 2017年2月21日这是在OpenTracing和分布式追踪领域内广受欢迎的一篇博客文章。在构建监控系统时,大家往往在这几个名词和方式之间纠结。 通过这篇文…

快速序列化组件MessagePack介绍

简介MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能。 MessagePack for C&#xff…

SpringCloud Greenwich(四)注册中心之eureka、Zuul和 gateway网关配置

本项目是搭建基于eureka注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 eureka-server eureka注册中心 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (…

【ASP.NET Core】给路由规则命名有何用处

上一篇中老周给伙伴们介绍了自定义视图搜索路径的方法,本篇咱们扯一下有关 URL 路径规则的名称问题。在扯今天的话题之前,先补充点东东。在上一篇中设置视图搜索路径时用到三个有序参数:{2}{1}{0},分别是 Area、Controller、Actio…