之前迁移了一个网站,springboot + vue架构,迁移后只有文件导入的post请求会报错,其他都没问题,搞了半天都没头绪。
报错信息如下:
导入失败:{"timestamp":"2024-06-03 21:16:45","status":404,"error":"Not Found","message":"No message available","path":"/expense/addfromexcel"}
404说明是路径错误,访问不到对应的后端接口,检查访问路径如下:
http://117.80.xxx.xxx:8013/api/businessDetail/addfromexcel
从路径来看,走的是前端8013端口,我看其他post请求都是走的8000后端端口。而且,swagger-ui调试,也显示这个addfromexcel请求走的是8000端口:
解决办法
最后在网上看到一个帖子http://t.csdnimg.cn/nHycA
发现竟是一个小错误,在nginx配置文件中,当nginx配置文件proxy_pass后边的url端口后面带"/"时,代理到后端的路径其实是会省略匹配到的/api/。
举例:访问接口为/api/businessDetail/addfromexcel
- 当nginx配置文件proxy_pass后边的url端口后面带"/"时,代理到后端的路径为:http://127.0.0.1:8080/businessDetail/addfromexcel,省略了匹配到的/api/路径
location /api/ {
proxy_pass http://127.0.0.1:8080/;
}
- proxy_pass后边的url端口后面不带"/"时,代理到后端的路径为:http://127.0.0.1:8080/api/businessDetail/addfromexcel,连同匹配到的/api/路径一起代理了
location /api/ {
proxy_pass http://127.0.0.1:8080;
}