nginx 配置二级目录网站,访问静态资源 404 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
florentino
V2EX    NGINX

nginx 配置二级目录网站,访问静态资源 404

  •  
  •   florentino 2024-03-27 14:13:12 +08:00 2133 次点击
    这是一个创建于 562 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    现在有两个网站需要部署,域名分别是: xyz.com,xyz.com/science 网站资源分别放在 ng 下的, admin 和 science 目录

    ng 的配置如下:

    server { listen 80; server_name xyz.com; # location / { root /usr/share/nginx/admin; } location /science { alias /usr/share/nginx/science; } } 

    遇到的问题

    前端有一些静态资源需要加载,静态资源放在网站资源目录下的 assert 目录中,比如

    /usr/share/nginx/admin/assert

    /usr/share/nginx/science/assert

    前端配置静态文件 src 的路径是 /assert/xxx.js

    当访问 xyz.com/science 网站时,页面请求静态资源直接请求 xyz.com/assert/xxx.js

    但是正确的请求应该是: xyz.com/science/assert/xxx.js

    为什么浏览器发出请求的时候会丢掉二级目录呢

    以及 ng 要怎么配置呢

    感谢各位大佬

    11 条回复    2024-03-27 16:35:29 +08:00
    dingdangnao
        1
    dingdangnao  
       2024-03-27 14:17:08 +08:00
    你写 assert/xxx.js 呗
    alexsz
        2
    alexsz  
       2024-03-27 14:19:46 +08:00   1
    我不是前端,我司有类似的项目,让前端同学在 science 项目打包时加个路由前缀就可以了
    zx9481
        3
    zx9481  
       2024-03-27 14:20:53 +08:00
    什么前端 vue 还是?
    zack5337
        4
    zack5337  
       2024-03-27 14:22:29 +08:00   1
    打包配置文件设置 publicPath: /science
    javalaw2010
        5
    javalaw2010  
       2024-03-27 14:23:42 +08:00   1
    因为打包工具并不知道你的网站部署的时候是在二级目录下,这个跟 ng 配置关系不大,主要是要修改打包的配置,解决方案参考 #2 。也许你可以试试把`/assert/xxx.js`改为`assert/xxx.js`。
    dier
        6
    dier  
       2024-03-27 14:25:00 +08:00   1
    我的建议是写两个 server ,用不同的 server_name 来区分。两个 server 中都只配置 localtion /
    namelesswryyy
        7
    namelesswryyy  
       2024-03-27 14:28:13 +08:00
    /assert/xxx.js 绝对路径,
    assert/xxx.js 相对路径
    改成相对路径试试
    lalalaqwer
        8
    lalalaqwer  
       2024-03-27 14:35:09 +08:00   1
    不知道你网站前端什么写的,放在 xyz.com/science 下的网站静态打包的时候静态资源可以配置一个 basePath 为 /science ,不同工具配置可能有点差别,搜搜就知道了
    florentino
        9
    florentino  
    OP
       2024-03-27 14:36:40 +08:00
    感谢各位大佬,问题解决了, vue 前端打包的时候要支持 部署二级目录

    可以参考: https://www.cnblogs.com/architectforest/p/16241060.html
    发现 V2 有类似问题,也可以参考: t/1024262#reply14
    hueralin
        10
    hueralin  
       2024-03-27 15:04:45 +08:00
    据我了解,第二个项目的打包路径要改成 /science ,这样打包出的文件路径前缀才是 /science ,否则都是 /,nginx 找不到
    lc5900
        11
    lc5900  
       2024-03-27 16:35:29 +08:00
    我之前也是折腾半天,最后换二级域名了,搞个通配符证书,用路径区分挺多坑的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5758 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 46ms UTC 06:19 PVG 14:19 LAX 23:19 JFK 02:19
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86