导读:本期聚焦于小伙伴创作的《Nginx同端口部署多前端项目实战:基于location与alias配置指南》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Nginx同端口部署多前端项目实战:基于location与alias配置指南》有用,将其分享出去将是对创作者最好的鼓励。

Nginx同端口部署多前端项目实战:基于location与alias配置指南

Nginx同端口部署多个Vue及Uni-app项目实战指南

在实际的开发与运维场景中,我们经常需要将多个前端项目(例如后台管理系统、用户端H5、Uni-app打包的移动端等)部署在同一台服务器的同一个端口下。这种需求通常通过Nginx的location指令配合前端路由的base路径来实现。本文将详细讲解如何从零开始配置前端项目与Nginx,实现多项目同端口平滑部署。

一、核心思路

同端口部署多项目的核心在于路径区分。假设我们的域名是www.ipipp.com,我们可以通过不同的路径来访问不同的项目:

  • www.ipipp.com/admin/ 访问 Vue 后台管理项目

  • www.ipipp.com/mobile/ 访问 Uni-app 移动端项目

为了实现这一点,前端在打包时需要修改公共路径(publicPath),Nginx在配置时需要使用alias将虚拟路径映射到服务器真实的物理目录。

二、前端项目打包配置

在部署前,必须确保前端项目打包后的静态资源路径是正确的,否则会出现js、css等文件404错误。

1. Vue项目配置 (以Vue CLI为例)

假设我们要将Vue项目部署在/admin/路径下,需要在vue.config.js中修改publicPath

module.exports = {
  publicPath: '/admin/',
  outputDir: 'dist',
  // 其他配置...
}

如果你使用的是 Vite,则需要在vite.config.js中配置base

export default defineConfig({
  base: '/admin/',
  build: {
    outDir: 'dist'
  }
})

2. Uni-app项目配置

Uni-app项目若打包为H5并部署在/mobile/路径下,需要在manifest.json中进行配置。找到H5相关配置,修改运行的基础路径:

{
  "h5": {
    "publicPath": "/mobile/",
    "router": {
      "base": "/mobile/"
    }
  }
}

配置完成后,分别将Vue项目和Uni-app项目打包,并将打包后的文件上传至服务器。例如分别存放在/usr/share/nginx/html/admin/usr/share/nginx/html/mobile目录下。

三、Nginx配置详解

Nginx配置是关键环节。这里我们需要使用alias而不是root,因为root会将location路径拼接到真实路径后面,而alias是路径替换,更符合我们的需求。

同时,为了支持前端History路由模式,必须配置try_files,将所有未匹配的请求重定向到对应的index.html

server {
    listen 80;
    server_name www.ipipp.com;

    # Vue后台管理项目
    location /admin {
        alias /usr/share/nginx/html/admin;
        index index.html;
        try_files $uri $uri/ /admin/index.html;
    }

    # Uni-app移动端项目
    location /mobile {
        alias /usr/share/nginx/html/mobile;
        index index.html;
        try_files $uri $uri/ /mobile/index.html;
    }

    # 根路径配置(可选,默认跳转或提示)
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

四、配置要点与常见问题排查

1. root 与 alias 的区别

在上述配置中,如果使用root /usr/share/nginx/html/admin;,当请求/admin/js/app.js时,Nginx会在服务器上寻找/usr/share/nginx/html/admin/admin/js/app.js,这显然是不存在的。使用alias则会在服务器上寻找/usr/share/nginx/html/admin/js/app.js,这正是我们需要的。

2. try_files 的 fallback 路径

注意try_files $uri $uri/ /admin/index.html;中的最后一个参数。当Nginx在磁盘上找不到对应文件时,会内部重定向到/admin/index.html。这个路径必须是相对于Nginx根路径的绝对路径,而不是文件系统路径,否则前端路由刷新时会出现404。

3. 静态资源404问题

如果部署后页面空白或控制台报js/css文件404,百分之九十的原因是前端打包时的publicPathbase与Nginx的location路径不一致。请务必确保前端打包配置的路径与Nginx监听的路径完全对应。

4. 接口请求代理

多项目部署时,不同项目可能请求不同的后端API。可以在同一个Server块下增加API的代理配置:

    # 代理Vue项目后端接口
    location /api/admin/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 代理Uni-app项目后端接口
    location /api/mobile/ {
        proxy_pass http://127.0.0.1:8081/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

按照以上步骤进行前端打包配置与Nginx反向代理配置,即可稳定实现Nginx同端口下多Vue及Uni-app项目的独立运行与平滑切换。配置修改完成后,记得执行nginx -s reload重载配置使其生效。

Nginx部署location配置alias指令Vue项目部署Uni-app项目部署

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。