nginx部署二级目录无法加载css和js的问题及解决过程

 更新时间:2025年09月10日 09:55:59   投稿:jingxian  
文章描述了React+UmiJS项目部署到Nginx二级目录时遇到的404和静态资源加载问题,因Nginx路径配置错误导致,通过调整.umirc.ts文件,修正了资源路径,最终实现正常部署

nginx部署二级目录无法加载css和js

项目前后端分离,前端采用react和umijs框架开发,前端页面部署在nginx上面。

原先的所有项目一直采用二级域名的部署方式,前端打包后上传到nginx目录下就能正常访问,一直没出现什么问题。

本次项目部署在二级目录下,访问地址为:https://www.xxxxxx.com/cms/。

前端页面打包后上传nginx目录,过程中出现了访问不到css和js的问题,问题详情及解决方案如下。

问题一:访问首页index.html报404

前端页面目录:/usr/local/nginx/html/cmspage/dist,目录下面上传三个文件:index.html、umi.css、umi.js。

  • nginx配置:
        location /cms/ {
            root   html/cmspage/dist;
            index  index.html index.htm;
        }

重启nginx后,访问https://www.xxxxxx.com/cms/,结果浏览器出现404。

查看nginx错误error.log日志文件,错误日志:

2022/07/06 15:55:57 [error] 25943#0: *161 "/usr/local/nginx/html/cmspage/dist/cms/index.html" is not found (2: No such file or directory), client: 172.16.252.1, server: www.xxxxxx.com, request: "GET /cms/ HTTP/1.1", host: "www.xxxxxx.com"

很明显,从错误日志信息可以看出,首页index.html所在的目录竟然多了一层cms目录。这应该是跟nginx配置二级目录/cms内部机制有关。

于是创建cms目录,将前端页面文件上传到目录/usr/local/nginx/html/cmspage/dist/cms。

再次访问,没有了404错误,但是页面一片空白。

问题二:访问不到umi.js和umi.css

接着问题一,查看nginx错误error.log日志文件,错误日志:

2022/07/06 16:03:53 [error] 28172#0: *217 open() "/usr/local/nginx/html/build/umi.css" failed (2: No such file or directory), client: 172.16.252.1, server: www.xxxxxx.com, request: "GET /umi.css HTTP/1.1", host: "www.xxxxxx.com", referrer: "https://www.xxxxxx.com/cms/"
2022/07/06 16:03:53 [error] 28172#0: *217 open() "/usr/local/nginx/html/build/umi.js" failed (2: No such file or directory), client: 172.16.252.1, server: www.xxxxxx.com, request: "GET /umi.js HTTP/1.1", host: "www.xxxxxx.com", referrer: "https://www.xxxxxx.com/cms/"

很明显,从错误日志信息可以看出,访问umi.css和umi.js所在的目录竟然是/usr/local/nginx/html/build,而不是/usr/local/nginx/html/cmspage/dist/cms。

尝试把umi.css和umi.js放到/usr/local/nginx/html/build目录下面,页面正常。

但是,总不能每次发布页面的时候单独把umi.css和umi.js放到/usr/local/nginx/html/build目录,而index.html放到/usr/local/nginx/html/cmspage/dist/cms目录,这根本不是问题的解决方案!!!

经过一翻搜索最终解决方法

是修改.umirc.ts

  • 如图所示:

再次访问https://www.xxxxxx.com/cms/,页面正常了。

后续应用发布的话,前端页面上传到/usr/local/nginx/html/cmspage/dist/cms目录就好,问题解决!!!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux下Nginx负载均衡多个tomcat配置的方法步骤

    Linux下Nginx负载均衡多个tomcat配置的方法步骤

    这篇文章主要介绍了Linux下Nginx负载均衡多个tomcat配置的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • 1分钟搞定Nginx版本的平滑升级与回滚的方法

    1分钟搞定Nginx版本的平滑升级与回滚的方法

    这篇文章主要介绍了1分钟搞定Nginx版本的平滑升级与回滚的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • nginx location 配置 正则表达式实例详解

    nginx location 配置 正则表达式实例详解

    本文通过实例代码给大家介绍了nginx location 配置 正则表达式的问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • nginx版本号隐藏(附405 not allowed解决办法)

    nginx版本号隐藏(附405 not allowed解决办法)

    版本号泄露时攻击者会利用相应软件版本的当前漏洞,进行有效的相应攻击,本文主要介绍了nginx版本号隐藏,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

    Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

    使用Mozilla SSL配置工具生成配置,修改nginx.conf的ssl_protocols和ssl_ciphers,通过ssllabs检测及Linux命令测试TLS版本支持情况,确保网站SSL安全配置生效,本文给大家介绍Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法,需要的朋友一起看看吧
    2025-08-08
  • Mac使用Nginx设置代理并禁用自带Apache的问题记录

    Mac使用Nginx设置代理并禁用自带Apache的问题记录

    本文介绍如何在Mac上禁用自带的Apache服务并安装Nginx,首先需要关闭Apache并禁止其自启动,接着,通过Homebrew安装Nginx,并配置其文件和目录,最后,介绍了如何生成SSL/自签名证书,详细步骤包括修改Apache配置、安装Nginx、编辑Nginx配置文件以及验证和重启Nginx服务
    2024-09-09
  • nginx作grpc的反向代理踩坑总结

    nginx作grpc的反向代理踩坑总结

    nginx是一款高性能的web服务器,常用于负载均衡和反向代理,本文主要介绍了nginx作grpc的反向代理踩坑总结,感兴趣的可以了解一下
    2021-07-07
  • 一文详解nginx中的root与alias

    一文详解nginx中的root与alias

    Nginx是一款流行的高性能Web服务器和反向代理服务器,这篇文章主要给大家介绍了关于如何通过一文详解nginx中的root与alias的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Nginx下Frp强制重定向为https配置详解

    Nginx下Frp强制重定向为https配置详解

    这篇文章主要介绍了Nginx下Frp强制重定向为https配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • nginx if 指令的具体使用

    nginx if 指令的具体使用

    if指令该指令用来支持条件判断,并根据条件判断结果选择不同的Nginx配置,本文主要介绍了nginx if 指令的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05

最新评论