用nginx在同一服务器端口下部署多个项目,第二个项目打开后页面空白?

1.问题概括:

按照这篇文章的做法,用nginx在在服务器同一端口下部署多个项目,结果发现,第一个项目正常运行,第二个项目打开后页面空白。

2.服务器上项目文件夹的结构:

/home 路径下有两个如下的项目文件夹:

MiniProgram-Admin

|--client

|--static

|--index.html

|--server

Vue-mall

其中,MiniProgram-Admin是第二个项目,client是前端项目文件夹(static文件夹下是引用的css和js),server是后端项目文件夹

3.项目文件配置:

项目的路由配置:

const createRouter \= () \=> new Router({

mode: 'history', // require service support

base: process.env.NODE\_ENV \=== 'production' ? '/MiniProgram-Admin/client/index/' : '/index/',

scrollBehavior: () \=> ({ y: 0 }),

routes: constantRoutes

})

项目的 vue.config.js 文件配置

 publicPath: process.env.NODE\_ENV \=== 'production' ? '/MiniProgram-Admin/client/' : '/',

4.nginx 文件的配置:

upstream koa.server {

server localhost:3000;

}

server {

listen 80;

location / {

root /home/vue-mall/;

index index.html index.htm;

try_files $uri $uri/ @router;

}

location /admin {

alias /home/MiniProgram-Admin/client;

index index.html index.htm;

try_files $uri $uri/ /MiniProgram-Admin/client/index.html;

}

location @router {

rewrite ^.*$ /index.html last;

}

}

5. 问题:

访问第一个项目(vue-mall),正常;访问第二个项目(
MiniProgram-Admin),页面空白,html结构如下:

并且有一定的机率出现这个报错(之前尝试的时候没有出现过)

不知道是哪里配置错了?而且这个报错也很迷,有时候不出现,但是不管报不报错,页面都是空白的。

回答

看你的报错就是资源返回的是 html。

然后你的路由规则拦截的是 //admin

但是你js资源请求的地址是 /MiniProgram-Admin

获取你可以参考我的文章,当然这也是我自己练习Vue部署的。
这是我Vue项目 https://www.charmcode.cn/app/... 使用的路由前缀为/app/mall
我博客项目占用了根路径 https://www.charmcode.cn

我自己写了一篇文章 通过不通路由路径,部署多个Vue项目
https://www.charmcode.cn/article/2020-06-30_nginx_vue

基本上,看到 unexpected token '<' 就可以确定是 404 之后返回了标准 404 HTML 页,于是浏览器按照 js 或者 css 语法解析的时候就出错了,出错的原因是第一个字符也就是 < 认不出。

看起来首页能打开,说明根目录配置没问题,那么接下来就调整资源引用的相对路径就可以了。

以上是 用nginx在同一服务器端口下部署多个项目,第二个项目打开后页面空白? 的全部内容, 来源链接: utcz.com/a/36204.html

回到顶部