nginx配置vue(history模式)

1 篇文章 0 订阅
1 篇文章 0 订阅

问题的原因:项目本来使用 hash 的路由模式来部署,因为需求关系,现在要改成 history 的模式来部署了(路径上不要有 # 号)
第一步:
修改项目的 router/index.js 的配置

const router = new VueRouter({
  mode: 'history',  // 将 hash 改成 history
  routes: [
    ...pages
  ]
})

修改 config/index.js assetsPublicPath
在这里插入图片描述

assetsPublicPath: './', // 把 / 改成 ./ 这样访问静态资源的时候使用相对路径,静态资源就不会报 404 了

第二步:
我现在是在本地测试,所以将打包出来的 dist 文件直接放在了 tomcat 的 root 目录下面,先让项目跑起来
在这里插入图片描述
tomcat 的 server.xml
在这里插入图片描述
修改了一下 port 和 host
然后启动 tomcat,在浏览器上面访问
在这里插入图片描述
在这里插入图片描述
可以看到直接访问到 index.html,并且静态资源什么的都正常访问了
但是访问项目的路由 localhost:8098/login 的时候页面直接就 404 了,因为 /login 直接被当作静态资源加载了,打包目录下当然是没有 login 这个文件
第三步:
这个时候就轮到 nginx 配置了
https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90
下面是我的 nginx 配置:

server {
        listen       8096;
        server_name  127.0.0.1;

		location / {
			proxy_pass http://localhost:8098/;
            index index.html;                        
            try_files $uri $uri/ /index.html;
        }
    }

可以看到我配置了一个代理,单访问 127.0.0.1:8096 的时候,会跳转到我的 tomcat 服务下面,try_files $uri $uri/ /index.html; 就是官网上面的配置。
启动 nginx,访问 127.0.0.1:8096
在这里插入图片描述
嗯?
在这里插入图片描述
仔细一看,明明访问的是 js,但是返回的是 index.html?
原因是访问这个 js 的时候 404 导致他被 nginx 转到了 index.html 上面了,所以明明是 js,但是解析的是一段 html,所以报了

Uncaught SyntaxError: Unexpected token '<'

为什么会 404 呢?直到我看到了这个 https://www.cnblogs.com/mmzuo-798/p/10871750.html
在这里插入图片描述
按照文中说法,我的项目是部署在 tomcat,使用 nginx 代理,所以 nginx 的本地资源是找不到我的项目的静态资源的!
于是试着把项目部署在 nginx,并把代理去掉了。
在这里插入图片描述
重启!搞定!
在这里插入图片描述
做一点补充:
有的页面在加载静态资源的时候报了 404
在这里插入图片描述
现在我在 nginx 上面的文件目录结构是这样子的
在这里插入图片描述
很明显少了一层 /xdxt/ 的目录,根据我页面的代码,判断是引入第三方文件的时候出了问题:
在这里插入图片描述
这个时候我们需要改一下我们的配置

server {
    listen       8096;
    server_name  127.0.0.1;
    location /static/mb-view/ {
        root html/xdxt;
        try_files $uri $uri/ /index.html;
    }
    location /xdxt/ {
        index index.html;
        try_files $uri $uri/xdxt/ /xdxt/index.html;
    }
}

结束啦,希望能帮到有需要的小伙伴。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值