同一个IP不同路径下部署不同的项目

怎么用nginx部署多个前端项目 nginx部署多个前端项目流程 阅读详情

🚩 解决方案:需要同时在 Vite 和 Nginx 中进行配置,两者缺一不可


以新项目需要在 xxx:xxx:xx:xx/apply 路径下部署为例

1️⃣ Vite 配置

作用:设置项目的基础路径(base path),让所有资源路径以 /apply 开头。

// vite.config.ts
export default defineConfig({
  base: '/apply', // 👈 核心配置项
  build: {
    outDir: 'dist',  // 需与nginx路径匹配
    assetsDir: 'assets',
    // 其他构建配置...
  }
})

关键说明:

base: '/apply' 会直接影响以下内容:

  • 所有静态资源路径(如JS/CSS/图片)将被解析为 /apply/assets/xxx
  • 路由系统会自动处理前端SPA的路径导航
  • 如果缺失此配置,浏览器会尝试加载错误路径 xxx:xxx:xxx:xx/assets/xxx(导致404)

2️⃣ Nginx 配置

作用:将指定路径 /apply 映射到新项目的目录,并处理所有请求的转发。

server {
    listen 80;
    server_name xxx.xxx.xxx.xx; # 你的IP或域名

    # ▶ 现有主项目的配置(已有配置,保持不动)◀
    location / { 
        root /path/to/main-project/dist;
        try_files $uri $uri/ /index.html;
    }

    # ▶ 新增子项目配置 ◀
    # 1. 处理 /apply 路径请求
    location ^~ /apply {
        alias /path/to/apply-project/dist; # 👈 必须使用alias,不要用root
        try_files $uri $uri/ /apply/index.html; # SPA路由支持
        index index.html;

        # 声明MIME类型(防止JS/CSS被当作下载文件)
        types {
            text/html               html;
            application/javascript js;
            text/css               css;
        }
    }

    # 2. 处理新项目的静态资源(高优先级)
    location ~ ^/apply/assets/.*\.(js|css|png|svg)$ {
        alias /path/to/apply-project/dist/assets;
        expires 1y; # 静态资源长期缓存
        access_log off;
    }
}

⚡ 配置协同工作原理

阶段Vite的作用Nginx的作用
构建时生成所有资源路径为 /apply/xxx 的形式——
请求到达时——根据请求路径匹配到正确项目的dist目录
资源加载时确保资源路径包含 /apply 前缀把 /apply/assets/xxx 映射到正确文件路径

🔍 验证流程

步骤1:检查构建产物路径
# 项目构建后的文件结构应为:
apply-project/
└─ dist/
   ├─ assets/       # 包含带hash的js/css文件
   │    └─ index-1a2b3c.js 
   └─ index.html     # 资源路径为 <script src="/apply/assets/index-1a2b3c.js">
步骤2:测试Nginx路径映射
# 测试新项目的HTML入口
curl -I http://xxx.xxx.xxx.xx/apply 
# 应返回200 和 Content-Type: text/html

# 测试JS文件访问
curl -I http://xxx.xxx.xxx.xx/apply/assets/index-1a2b3c.js 
# 应返回200 和 Content-Type: application/javascript
步骤3:浏览器端验证(必须)

打开浏览器开发者工具,检查以下内容:

  • 所有资源的请求路径是否以 /apply 开头
  • 是否存在404错误,重点检查带hash的资源文件

🛠 常见问题解决表

故障现象原因解决方案
页面空白,控制台显示资源404Nginx配置未正确映射 /apply 路径检查alias路径是否指向新项目的dist目录
JS/CSS文件被浏览器当作下载文件MIME类型未正确识别增加 types {...} 声明块
首页可访问,但页面刷新后404SPA路由未正确处理确保所有location块有 try_files $uri $uri/ /apply/index.html
主项目资源被错误加载到新项目路径现有项目的静态资源规则覆盖了新项目将新项目的静态资源匹配规则放在更靠前的位置
构建后的资源路径缺少 /apply 前缀Vite配置中 base: '/apply' 未设置或未生效确认vite.config.ts已正确导出配置

💡 高级技巧:多项目共存优化

若需要部署多个独立项目,可用更清晰的路径结构:

# 项目A(/project-a)
location ^~ /project-a {
    alias /path/to/project-a/dist;
    try_files $uri $uri/ /project-a/index.html;
}

# 项目B(/project-b)
location ^~ /project-b {
    alias /path/to/project-b/dist;
    try_files $uri $uri/ /project-b/index.html;
}

# 静态资源统一处理
location ~ ^/(project-a|project-b)/assets/ {
    alias /path/to/$1/dist/assets; # 👈 使用变量动态匹配
    expires 1y;
}
Apache+mod_wsgi 部署多个django项目(基于同样IP和同样端口,不同path) 最近由于要在apache部署多个django项目,两个项目要求使用同一个ip和port,请求不同path来访问不同的项目。 环境:centos7+apache2.4.6 本次通过配置虚拟主机的方式实现。 1.在/etc/httpd/conf下创建extra目录 2.在/etc/httpd/conf/extra下创建httpd_vhosts.conf文件 3.&lt;VirtualHost... 阅读详情

相关推荐

Halcon深度图转点云实战:从XYZ映射到3D可视化全解析

本文详细解析了如何使用Halcon将深度图转换为点云图,涵盖从XYZ映射到3D可视化的全流程。通过实战案例和代码示例,介绍了深度图预处理、xyz_to_object_model_3d核心转换及3D可视化技巧,适用于工业检测、三维重建等场景。

stem5的博客 766

Nginx同一个端口部署多个vue项目

Nginx同一个端口部署多个vue项目,亲测有效

resuper0的博客 6370

团结引擎+OpenHarmony 2实战篇:从零构建鸿蒙应用开发环境

本文详细介绍了如何从零开始构建鸿蒙应用开发环境,重点讲解了团结引擎与OpenHarmony 2的实战配置步骤。内容包括DevEco Studio安装、OpenHarmony SDK配置、团结引擎集成及项目创建等关键环节,帮助开发者快速搭建高效的开发环境,提升鸿蒙应用开发效率。

weixin_29294395的博客 265

Nginx配置同一端口不同域名或同一IP不同端口

在Nginx中,可以通过配置实现同一端口不同域名或同一IP不同端口的请求分发。对于同一端口不同域名(基于名称的虚拟主机),需为每个域名创建独立的网站目录,并在Nginx配置文件中分别设置server块,指定server_name和root路径,最后重启Nginx生效。对于同一IP不同端口,需为不同端口创建服务目录,并在Nginx中配置监听不同端口的server块,如8080端口提供静态页面,8081端口代理Node.js应用。配置完成后,需确保域名解析正确、防火墙开放相关端口,并建议为每个服务配置独立日志。

大聪明的博客 2924

【ros2】ros2_control 全面解析与实战指南

ros2_control 是 ROS2 生态中用于机器人实时控制的核心框架,旨在统一硬件接入接口、复用控制算法,避免重复开发,实现仿真与实机硬件的无缝迁移。其核心目标是简化不同硬件(传感器、执行器、完整系统)的集成流程,让开发者专注于控制逻辑而非硬件适配。创建类型功能包,依赖rclcpp。实现on_initupdate在中声明控制器插件,编译生成动态库。在 YAML 配置文件中指定自定义控制器类型,加载测试。

EnHengNa的博客 1483

Pywinauto与Inspect.exe完美搭配:解决Windows应用UI自动化中的元素定位难题

本文详细介绍了如何将Pywinauto与Inspect.exe结合,以解决Windows应用UI自动化中的核心难题——元素定位。通过实战指南,阐述了如何利用Inspect.exe在UIA模式下精准侦察控件属性,并将这些信息转化为Pywinauto的稳健定位策略,从而高效自动化WPF、WinForms等现代框架构建的复杂桌面应用。

weixin_29297127的博客 520

nginx部署多个vue项目的2种方法

第一种 同一个域名或者ip 相同端口号 部署多个项目 通过斜线访问 http://10.16.xx.23/student/ http://10.16.xx.23 先看这2种配置 查找nginx 和配置文件 whereis nginx 查看配置文件 vim nginx.conf user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/ngin.

光英的记忆博客 2万+

Diffusion Model原理详解

Diffusion Model(扩散模型 )对标的是生成对抗网络(GAN),本文将用通俗的语言和公式为大家介绍Diffusion Model,并且结合公式为大家梳理Diffusion Model的代码。

weixin_42620109的博客 6099

nginx部署多个前端项目

通过访问不同的子路径部署多个前端项目,并结合`vue-router`的不同路由模式,给出不同的配置。

heyYouU的博客 5453

elasticsearch-6.5.4集群部署(图文详细)及常见错误

目录 服务器规划 部署包下载 服务器初始化(所有节点都要操作) 内核参数修改 /etc/security/limits.conf修改 /etc/sysctl.conf文件修改 禁用selinux 关闭防火墙 创建es用户 安装jdk es部署 单节点(节点1)部署 部署包上传解压 配置文件修改 修改文件属组 部署包分发 单节点(节点2)部署 配置文件修改 修改文件属组 单节点(节点3)部署 配置文件修改 修改文件属组 启动ES集群 验证 单节点验证 查看集

夜灬狼丶 1978

PCL 利用RANSAC改进的ICP算法

本文介绍了一种基于RANSAC改进的ICP点云配准算法。算法原理部分阐述了在ICP迭代过程中使用RANSAC剔除错误匹配点对的方法。

点云侠的博客 196

linux 同一个ip 绑定两个不同的域名 访问两个不同的项目

用两个不同的域名绑定同一个ip访问两个不同的项目是完全可以做到的,远没有想象的那么复杂,使用服务器环境LNMP 要实现这个功能首先需要配置nginx 打开nginx的配置文档(nginx.conf) server { listen 80;          //端口 server_name www.xxxxx.com;      //域名 access_log...

phubing 1153

【AI智能体】Coze 打通MySql实现数据报表展示应用搭建详解

Coze 打通MySql实现数据报表展示应用搭建详解

congge 3857

linux修改对外访问ip_linux 同一个ip 绑定两个不同的域名 访问两个不同的项目

phubing 2020-01-08 11:52:17 267 收藏分类专栏: Nginx 文章标签: Nginx 域名 IP版权用两个不同的域名绑定同一个ip访问两个不同的项目是完全可以做到的,远没有想象的那么复杂,使用服务器环境LNMP要实现这个功能首先需要配置nginx 打开nginx的配置文档(nginx.conf)server { listen 80;          //端...

weixin_39970369的博客 400

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

nginx同一个ip同一个端口下如何发布多个项目

nginx在同一个ip同一个端口下面如何发布多个项目? 有两种方式:①根据路径进行区分项目,②根据域名来区分项目 一,根据路径进行区分项目 如果有两个项目都在服务器的根目录,一个项目的路径是/home/www/index.html,另一个是/home/rrr/index.html, 那么nginx.conf的配置文件可以这样写 server { listen 8080; server_name _;

gujian_peachblossom的博客 5469

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

httpd的虚拟主机(不同ip地址,同一个ip不同端口,同一个ip同一个端口不同域名都可以实现不同网站)运用

基于不同ip地址的方式 我们要先编辑配置文件vim /etc/httpd/conf/httpd.conf 我们添加俩个台虚拟主机(俩个ip地址) 首先把之前的DocumnetRoot的目录注释掉然后添加下面的内容,我们添加俩个虚拟主机一个是192.168.10.2一个是192.168.10.3  首先创建目录编辑配置文件中的路径web1和web2   我们创建文件并输入内容 ...

刘东义的博客 4054

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Nginx 部署多个 VUE 项目(相同IP、相同端口、不同上下文路径)

文章目录一、场景描述二、解决方案1、前端项目配置2、代理服务配置 一、场景描述   在前后分离的项目开发中,前端项目开发人员对 vue 项目的打包一般都是采用默认根目录访问的。如果多个前端项目都采用根目录的方式访问,分别部署在不同的服务器或者同一个服务器的不同端口,那通过 Nginx 代理的方式还很好解决。但是如果必须在同一个 IP 相同端口下,通过访问的上下文路径来区分,那么就是一个比较棘手的问题。   接下来的操作就是带领有以上困惑的开发人员来处理此类问题。 二、解决方案 1、前端项目配置 修改 v

Rambo's Blog 4267

如何实现同一个ip下同一个80端口部署多个网站?

【一台服务器上如何创建多个网站?】 原理分析 本质就是Nginx监听一台服务器的80端口,使用不同的域名映射到不同的Linux文件目录(站点发布的目录) 首先就是多个域名可以解析到同一个ip地址。我们的虚拟主机技术就是利用这一点来实现的。一般情况下,我们标识一个网站是通过网站的ip和端口以及网站项目名称来标识的。 在测试环境下,你可以通过修改成不同的端口,或者修改网站的项目名称来实现在同一台主机下部署多个网站。 但是在真正的生产环境下,我们的网站往往都是采用的80端口,而且都是不带有网站目录路径的。这个时候

新手建站笔记(博客建站) 5205

关于项目部署后资源在服务器上路径

项目部署时 项目部署在服务器上后,要访问该项目 地址应该为: http://域名(IP地址):端口号/项目名/要访问的资源地址 (http://域名(IP地址):端口号/项目名/)访问到项目的是文件夹。 设置Servlet在项目上的路径(3.0后一般使用注解进行配置路径) 访问该Servlet的路径为 http://域名(IP地址):端口号/项目名/...

weixin_43332255的博客 2599

同一浏览器不同选项卡访问同一页面_linux 同一个ip 绑定两个不同的域名 访问两个不同的项目...

phubing 2020-01-08 11:52:17 267 收藏分类专栏: Nginx 文章标签: Nginx 域名 IP版权用两个不同的域名绑定同一个ip访问两个不同的项目是完全可以做到的,远没有想象的那么复杂,使用服务器环境LNMP要实现这个功能首先需要配置nginx 打开nginx的配置文档(nginx.conf)server { listen 80;          //端...

weixin_31182871的博客 134

项目部署:同一个ip,不同端口号,session失效

背景 我有两个工程projectA、projectB,projectA放在TomcatA中,projectB放在TomcatB中,TomcatA、TomcatB在一台server上。  工程都映射的根路径,不用project名字就可以访问,如下 http://ip1:7777/  http://ip1:8080/ 问题 先在7777登录,然后再在8080登录,发现会把7

笨笨CEO的博客 2268

vue+vite+nginx 前端项目部署在同一端口的不同路径

vue+vite+nginx 前端项目部署在同一端口的不同路径

reembarkation的博客 585

linux系统上部署springboot项目,可直接通过ip访问

1.修改打包方式为war &amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt; 2.设置打包后的包名,添加springboot的maven插件 &amp;lt;build&amp;gt; &amp;lt;finalName&amp;gt;bhy702-website&amp;lt;/finalName&amp;gt; &amp;lt;plu

白鸿源的博客 6192

vue项目部署,出现两个ip的原因

vue项目部署,出现两个ip的原因

s_sos0的博客 1370

宝塔如何实现一个IP地址根据不同的端口部署多个JAVA项目(已解决)

打开宝塔面板,在“文件”的“www.wwwroot”中,新建自己项目的文件夹,用于存放后端jar包以及前端文件。保存后即可部署成功第一个项目,第二个项目流程一致但是在这里是不能直接配置同一个ip了,会提示ip已注册。部署好环境后,通过端口80和端口88分别访问同一IP地址上的两个项目。注意:必须确认已在云服务器控制台和宝塔安全组上开放对应的端口。再进入配置文件中修改nginx配置保存即可。在域名管理中添加服务器ip或者域名+端口。项目的部署这里不作介绍,作者在相应。开启外网映射以及配置前端页面路径。

Juneh111的博客 951

Nginx 部署多个vue项目 (同IP,同端口,不同路径)

一.Vue项目中的配置 1.配置vue中conf下的index.js,配置如下: build: { env: require('./prod.env'), index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), ...

svallll的博客 3260
上一篇: 基于Whistle的本地插件热更新调试方案(零侵入无需源码)
下一篇: WPS weboffice插件开发,流式插入有序列表,会出现自动编号,导致编号重复的问题
吾先生(用户昵称已存在)
博客等级 码龄6年 35粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值