当前位置: 首页 > 知识库问答 >
问题:

Vue项目上传nginx出现前端资源和api路由冲突?

太叔炎彬
2024-04-18

yarn vue3项目打包后将dist根目录上传nginx web根目录,http://aaa.com/index.html

这个index.html就是dist生成的,我没有上传dist这个文件夹,直接把里面的静态文件上传web根目录。

第一次请求后,会跳转到aaa.com/login进行登录,登录完成进入aaa.com/home显示正常
但是将aaa.com/home刷新就会显示404,我在nginx配置添加:try_files $uri $uri/ /index.html;

然后正常,但是刷新后不断请求api接口,F12请求上百次

我手动访问api接口:
aaa.com/admin/getadmin,
aaa.com/api/getuser,
aaa.com/index/getmenu,
这三个api全部是前端展示的,并没有走vue 代理

如果不添加nginx配置 try_files $uri $uri/ /index.html;

访问全部正常如下:
{

"code": 401,"msg": "登录不合法"

}

也就是说访问首页404和api接口冲突,请问这个如何解决?感谢路过的大佬!!!

我使用的是Vue createWebHistory模式

共有1个答案

容飞掣
2024-04-18

可以贴一下配置文件。。
这个 location 是有优先级的,根据规则来匹配判断选择不同的配置。

当匹配到 location / 时,就会走try_files,这里 try_files 就是判断 $uri 这个路径在nginx服务器上是不是存在的,如果不存在判断下一个,一直到 /index.html。

很明显这里 所有的请求都被匹配到 try_files 了,所以后端的接口才会一直返回前端的index.html(前端页面)。

解决方法就是在加一个优先级更高的 location ,让接口的请求走代理。

举个例子:

server {    listen       80;    server_name  domain.com;    root /data/www/test;    location / {  # 这部份用来处理前端的资源        alias /data/www/domain.com/html/;        try_files $uri $uri/ /index.html;    }    location /api/ {  # 这部份/api/开头的请求代理到后端的接口上        proxy_pass http://x.x.x.x:4000;    }    location /admin/ {  # 和上面一样        proxy_pass http://x.x.x.x:8000;    }}
 类似资料:
  • 资源路由 支持设置RESTFul请求的资源路由,方式如下: Route::resource('blog','index/blog'); 表示注册了一个名称为blog的资源路由到index模块的Blog控制器,系统会自动注册7个路由规则,如下: 标识 请求类型 生成路由规则 对应操作方法(默认) index GET blog index create GET blog/create create s

  • 我正在尝试在我的nginx服务器上设置vue路由器。我遇到的问题是,如果我直接在浏览器中输入url,我的路线就不起作用。 我尝试了vue路由器文档中描述的服务器配置,以及建议的堆栈溢出类似配置。我当前的nginx位置配置如下: 所做的就是将任何路径重定向到我的根组件(path:),而不是。这确实有意义,并且似乎只重定向到索引文件。我如何重定向直接链接的到路由在我的VueJS应用程序? 以下是我的v

  • 最近在使用vue-admin-template开发后台管理系统,遇到动态路由刷新出现页面白屏问题 用户登录时通过角色获取角色路由并动态加载到router对象 在App.vue 中将保存于vuex中的路由信息刷新前存入到sessionStorage中,刷新后取出并重新加载路由; 重置路由方法 全局路由守卫 角色路由直接编写在JS文件中 出现问题正常登录能够进行路由跳转但是点击浏览器刷新出现页面白屏,

  • vue前端项目npm run build:prod打包后放在nginx上运行,项目是一个后台前端,在本地运行时正常,放在服务器上时菜单不显示了,浏览器控制台报错 菜单不显示: 菜单显示: 出错的地方是菜单栏一个变量未识别, 问了gpt说这样改,方法试过都无效。 求大佬帮忙看看!!

  • null 我已经登记了路线

  • 本文向大家介绍vue项目实现图片上传功能,包括了vue项目实现图片上传功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue实现图片上传功能的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。