若依前后端分离版部署出现 404 以及接口访问 404 问题
使用若依前后端分离版本开发一个新项目,在部署的时候出现 404 报错:
项目的 nginx 配置是从之前一个项目复制过来的,也是前后端分离,然后通过 nginx 做的反向代理。
404 报错太普遍了,也处理过很多次,但都不记得了。
百度了一下,是要在根目录添加 try_fiels
语句,实现伪静态。实际访问的是路径是不包含 .html
后缀的,但 nginx 解析的文件就是 index.html
或 index.htm
(文件类型索引:index index.html index.htm;
),所以需要做一下转换。
想起来当初做 php 项目部署的时候也是经常会遇到 404,就是这么处理的。
此时登录页出来的,但又出现新的报错:登录状态已过期,您可以继续留在该页面,或者重新登录
:
验证码也没有加载出来,提示 401 认证失败,无法访问系统资源
。
点击重新登录请求一直无法完成,查看请求状态也是 401。也就是说,此时所有的后台请求都是 401。
但我查看 ip+port 后面默认地址是有信息的,knife4j 接口文档也访问正常。
找了很久没有确认问题所在,就去找官方文档里的部署部分 - nginx 配置,对照着查看,果然发现了问题。
代理配置中,proxy_pass http://localhost:9000;
后面少了一个斜杠,应该为 proxy_pass http://localhost:9000/;
。
简单的问题出错了就是这么让人摸不着头脑。这里应该是代理路径转化的问题,如果没有斜杠 /
,那么 http://localhost:90/prod-api/logout
访问的就是 http://localhost:9000logout
,压根找不到地址。
添加斜杠 /
之后,重启 nginx 访问成功。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。