gateway路由转发失败

在springcloud nacos配置中,当我们去配置一项gateway网关微服务时,网关微服务启动项目配置如下:

除此之外,需要在Nacos共享配置中添加额外的配置,即配置当前网关下转发服务路径

spring:
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]': # 匹配所有请求
            allowedOrigins: "*" #跨域处理 允许所有的域
            allowedMethods: # 支持的方法
              - GET
              - POST
              - PUT
              - DELETE
      routes:
        # 平台管理
        - id: web
          uri: lb://leadnews-web
          predicates:
            - Path=/web/**
          filters:
            - StripPrefix= 1

以上可以看到,当请求的路径抵达网关微服务,将通过上面中的 routes 路由进行请求转发到leadnews-web微服务中(微服务需要启动)

然而,当我不走gateway网关直接访问leadnews-web服务能够访问成功,如下:

而我转向走网关微服务时,改变端口号再进行访问,如下:

 

发生了报错,说明请求是有问题的

经过排查,发现是在路由请求中,需要的请求路径是web/**,如下:

 

而正因为本次的项目请求有web开头,所以造就了以为有了,如下

 

但实际情况是,当访问网关微服务时候,必须加上web/才能进行请求转发,也就是说,后面的web/login/in属于web微服务内容,而gateway微服务请求转发时候,必须是web/,所以改成:

web/web/login/in即可成功

 

通过这次小问题,springcloud网关微服务转发又有了新的认识! 

### Spring Cloud Gateway 转发请求失败解决方案 当遇到Spring Cloud Gateway转发WebSocket服务失败的情况时,通常是因为默认的HTTP处理机制不适用于WebSocket协议。为了使网关能够正确处理WebSocket连接,需要进行特定配置。 #### 配置WebSocket支持 为了让Spring Cloud Gateway正常工作于WebSocket之上,需确保已启用Websocket的支持并进行了适当配置: 1. **引入依赖** 在`pom.xml`文件中加入必要的依赖项来支持WebSocket功能[^1]。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. **自定义过滤器链工厂** 创建一个继承自`NettyRoutingFilter`类的新组件,并重写其中的方法以适应WebSocket握手过程中的特殊需求。这一步骤对于确保WebSocket客户端可以成功建立初始连接至关重要。 3. **设置路由断言与过滤器** 定义针对WebSocket流量的具体路由规则,在此过程中可利用谓词表达式匹配目标路径以及应用相应的预/后处理器来增强安全性或实现其他业务逻辑[^2]。 4. **调整Nginx代理设置(如果适用)** 如果前端存在反向代理服务器,则还需确认其是否正确设置了升级头(`Upgrade`)和连接类型(`Connection`)字段以便传递给下游的服务实例。错误的配置可能会阻止WebSocket握手完成。 通过上述措施,应该能有效解决大多数情况下由于缺少必要配置而导致的Spring Cloud Gateway无法正确转发WebSocket请求的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值