问题描述
原本在后端的网关配置文件bootstrap.yaml中配置路由规则,正常启动有效,实现请求分发。
后续将复制的路由规则移动到Nacos中,就一直请求分发失效,报错404
错误操作
我在后端配置文件bootstrap.yaml中配置路由规则生效后,删除原有成功的路由规则。在Nacos中创建配置,Data Id为 gateway.properties。
进入该文件,里面有转换为yaml格式的按钮,就偷懒使用该按钮并复制之前成功的yaml格式的路由规则到本文件中。
启动后,路由规则失效并报错404,提示路由不存在
原因分析:
后端配置Nacos读取配置时,指定file-extension为properties(默认值)
Nacos配置的文件名为gateway.properties,文件内的格式却因偷懒改成了yaml格式的,导致一致报错404。
1.在bootstrap.yaml文件中配置Nacos中的配置文件后缀为properties
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: 42750b6f-e673-49e3-b741-6e5e67d6cfc1
## 默认读取的文件: {application.name}.{file-extension}
## 即读取Nacos中的名为Data Id的文件
## application.name: 配置的服务名,本例为 gateway
## file-extension: 配置文件的后缀名,默认为 properties
config:
server-addr: 127.0.0.1:8848
namespace: 42750b6f-e673-49e3-b741-6e5e67d6cfc1
################这里踩坑了#################
file-extension: properties
################这里踩坑了#################
##开启动态刷新读取
refresh-enabled: true
2.偷懒在Nacos的gateway.properties配置文件中使用 yaml按钮强转文件格式
解决方案:
方法一:
我将原本成功的路由规则改成properties格式,并复制到gateway.properties文件,成功解决404报错。
方法二:
- 将后端Nacos读取配置时的file-extension设置成yaml
- Nacos中新建名为gateway.yaml的配置文件,并将yaml格式的路由规则复制过去。
菜鸡不是在踩坑就是在踩坑的路上。
看完如有帮助,请点个赞(别白嫖啊),我也想看看同一坑能容纳多少人!哈哈哈哈!