​在Nginx中部署Vue项目并添加路径前缀

开发 前端
随着前端技术的不断发展,Vue.js作为一种流行的JavaScript框架,被广泛应用于构建现代化的Web应用程序。而在生产环境中,我们通常需要借助Web服务器来部署和提供Vue应用的静态资源。Nginx作为一款高性能的HTTP和反向代理服务器,成为了许多开发者的首选。

随着前端技术的不断发展,Vue.js作为一种流行的JavaScript框架,被广泛应用于构建现代化的Web应用程序。而在生产环境中,我们通常需要借助Web服务器来部署和提供Vue应用的静态资源。Nginx作为一款高性能的HTTP和反向代理服务器,成为了许多开发者的首选。

一个案例:

一个客户提出希望在部署后的路径上添加一个项目前缀weijishu,原来访问地址是http://192.168.11.12:8888,现希望改成http://192.168.11.12:8888/weijishu才能正常访问,查阅诸多资料,从nginx部署多个前端项目中找到灵感。

server {
  listen       8081;
  server_name  localhost;
  location / { 
    #不修改此处,确保用户直接输入ip+端口无法访问到系统
    root   html;index  index.html index.htm;
  }
  location /weijishu {
    #添加前缀,但html中存放vue的目录名尽量也要改成相同名字
    alias  html/weijishu;
    index  index.html index.htm;
    try_files  $uri  $uri/   /index.html;
  }
}

改好配置后,发现页面一片空白,审查元素,发现资源文件都是404,如下图:

原因是vue打包后的资源文件默认是绝对路径,只有配置在根目录才有效。修改vue打包配置,找到vue.config.js,修改publicPath:'/'   为    ' ./  ' ,修改为相对路径

重新打包,重启nginx,启动成功。

下面详细介绍一下如何在Nginx中部署Vue项目,并为其添加路径前缀。

一、构建Vue项目

首先确保Vue项目已经构建完成。在项目的根目录下,运行以下命令来生成用于生产环境的静态文件:

npm run build

构建完成后,可以在项目的dist目录中看到生成的静态文件。

二、准备Nginx服务器

我们需要一个已经安装并配置好的Nginx服务器。如果你还没有安装Nginx,需要根据你所使用的操作系统进行安装。

三、部署Vue项目到Nginx

将Vue项目构建生成的静态文件复制到Nginx服务器的适当位置。

四、配置Nginx

打开Nginx的配置文件,一般位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default。

在配置文件中找到server块,然后添加一个新的location块来指定Vue项目的访问路径。例如,如果你想将Vue项目部署在/my-vue-app/路径下,可以添加以下配置:

server {  
    # ... 其他配置 ...  
  
    location /my-vue-app/ {  
        root /path/to/your/vue/dist;  
        try_files $uri $uri/ /my-vue-app/index.html;  
    }  
  
    # ... 其他配置 ...  
}

在上述配置中,root指令指定了Vue项目的静态文件所在的目录,try_files指令告诉Nginx如何寻找和返回文件。当请求的路径不存在时,Nginx会默认返回/my-vue-app/index.html,这对于Vue的单页应用(SPA)是非常重要的,因为它允许Vue Router接管路由。

五、验证并重新加载Nginx

保存并关闭配置文件后,你需要验证Nginx配置的正确性,并重新加载配置以使更改生效。

验证配置:

nginx -t

如果配置验证通过,没有错误,那么重新加载Nginx:

sudo systemctl reload nginx

六、访问你的Vue应用

现在,你可以通过浏览器访问http://your-server-ip/my-vue-app/来查看你的Vue应用了。Nginx将正确地处理路径前缀,并将请求转发到Vue应用的静态资源。

责任编辑:华轩 来源: 微技术之家
相关推荐

2017-08-08 11:14:47

AzureKubernetes多容器应用程序

2021-01-18 09:08:44

树莓派Ceph开源

2017-06-01 12:30:59

SQL云计算云端

2021-10-13 08:53:09

Docker Django 容器

2022-08-31 08:30:32

kubernetesMetalLB

2021-09-29 11:00:49

Vue文件前端

2012-12-07 10:17:37

IBMdW

2021-11-02 17:27:40

部署高可用Kubernetes

2010-05-26 10:12:43

部署IPv6网络

2011-11-25 09:55:00

MPLSWeb应用加速WAN优化

2009-06-24 15:05:00

2020-11-13 09:22:32

Docker数据库容器

2016-12-07 09:06:53

2022-09-27 12:00:58

HadoopK8S开源

2009-04-21 09:56:58

AzureMVCASP.NET

2015-07-30 10:45:15

2020-12-18 09:15:16

LinuxVue命令

2021-03-30 17:03:02

React开发部署Nginx

2012-06-29 09:54:58

无线通信无线紧急警报系统

2024-03-04 15:15:14

人工智能云计算AI
点赞
收藏

51CTO技术栈公众号