在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网关微服务转发又有了新的认识!