You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署多React应用:同一域名下Nginx /marketing静态文件加载失败

解决同一域名下两个React项目部署的静态资源加载问题

问题原因分析

当前Nginx配置中,location /marketing 使用root指令会导致Nginx尝试在/usr/share/nginx/html/web/marketing/目录下查找静态资源,但你的marketing项目文件实际存放在/usr/share/nginx/html/web/目录,路径不匹配;同时React打包时默认静态资源路径为根路径/,在/marketing路径下请求静态资源会指向根目录,导致加载失败。

配置调整步骤

1. 修改Nginx配置

将location /marketing中的root替换为alias,并调整try_files的最终 fallback 路径:

server{
    listen 4000;
    server_name localhost;
    
    location / { 
        root /usr/share/nginx/html/stg;
        try_files $uri /index.html =404;       
    }   
    location /marketing {
        alias /usr/share/nginx/html/web/;
        try_files $uri $uri/ /marketing/index.html =404;
    }   
}
  • alias会将/marketing路径直接映射到/usr/share/nginx/html/web/目录,而非拼接路径
  • try_files最后指定/marketing/index.html,确保单页应用路由刷新时能正确加载入口文件

2. 调整marketing项目的静态资源路径

在marketing项目的package.json中添加homepage字段,指定项目的基础路径:

{
  "name": "marketing-app",
  "homepage": "/marketing",
  // 其他配置...
}

或者在项目的webpack配置中设置output.publicPath:

module.exports = {
  // 其他配置...
  output: {
    publicPath: '/marketing/',
    // 其他输出配置...
  }
};

修改后重新打包marketing项目,替换./new-build/目录下的文件,确保静态资源路径都带有/marketing前缀。

3. 重启Nginx容器

执行以下命令重启Nginx使配置生效:

docker-compose restart nginx

内容的提问来源于stack exchange,提问作者Naveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:06:24