想问下有没有通过接口更新前端静态文件的方法? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
flowercoder
V2EX    问与答

想问下有没有通过接口更新前端静态文件的方法?

  •  a href="Javascript:" Onclick="downVoteTopic(1094311);" class="vote">
  •   flowercoder 2024-12-02 11:46:45 +08:00 1329 次点击
    这是一个创建于 379 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题: 实际情况如下:前后端部署后,后端接口可以在互联网访问。但由于安全问题,每次登录服务器后台( ssh ),需要登录堡垒机且还要找人要验证码,且那人没那么配合。 初步设想: 目前前端 vue 文件放在服务器的 nginx/html/文件夹下,现在想做个接口,传一个前端 zip 包,然后替换 nginx/html 这个文件夹下同名文件夹。 实际情况如下: 简言之: 可以写公网接口,或是寻找开源项目,希望能把前端文件通过简单的方式进行同步更新。

    13 条回复    2024-12-02 16:27:04 +08:00
    fishlium
        1
    fishlium  
       2024-12-02 11:49:45 +08:00
    可以实现,但是建议不要,都是因为安全问题了,要是你这个接口出了安全问题,给你换点什么离谱的网站,就炸了
    wu00
        2
    wu00  
       2024-12-02 11:54:59 +08:00
    都有堡垒机了,这种“脏活”甩给运维就行了;
    他要么搭自动化要么手动去搞
    blueorange
        3
    blueorange  
       2024-12-02 12:23:43 +08:00
    docker 装个 alist ?当文件管理?
    yzding
        4
    yzding  
       2024-12-02 12:48:33 +08:00 via iPhone
    可以,上传之后你还要改一下文件之类的 nginx 权限。安全问题你自己加上接口白名单访问或者设置密码之类的
    yzding
        5
    yzding  
       2024-12-02 12:49:45 +08:00 via iPhone
    如果是你自己的项目你就这么干,公司的还是让专门负责的人给出解决方案(好甩锅)
    ltaoo1o
        6
    ltaoo1o  
       2024-12-02 13:03:22 +08:00
    你需要的是一套前端部署方案。

    除了前面说的安全问题,还存在一个致命问题。
    1 、替换 html + 静态资源
    当用户正在访问你的网站,你替换成功了,用户切换到其他页面或使用其他功能,懒加载的 js 不存在(被替换了),页面就用不了了。
    2 、只替换静态资源(同名文件)
    现在的打包工具默认都是 hash 应该不会出现这种情况除非特殊配置,nginx 是有缓存所以替换是不生效的

    部署方案都是增量,旧资源不删除的,还可以支持回滚。
    ltaoo1o
        7
    ltaoo1o  
       2024-12-02 13:06:21 +08:00
    这个问题本身非常简单,在服务器跑一个后端服务提供类似 /api/upload 接口,接口逻辑就是拿到上传的压缩包解压并覆盖指定文件夹,你用 AI 写都行。

    接口可以加个验证机制比如请求头必须包含 xxx 字符串
    flowercoder
        8
    flowercoder  
    OP
       2024-12-02 14:48:34 +08:00
    @li1218040201 我昨天用豆包写了一下,它给的答案是能写的,我准备这个接口除了要 token 外再一个 sercet 密钥一起提高安全性。我打算是把文件夹下文件都删了再解压,替换我怕有问题,前端不是我,我只管后端和维护。我想到的是能不能还有简单暴力的方式,或是直接把这种更新前端静态文件的功能做个模块封装一下开发是否更合理一点?
    flowercoder
        9
    flowercoder  
    OP
       2024-12-02 14:50:07 +08:00
    @fishlium 不是对公众的,只对甲方的内部几个部门用的,连域名都没申请
    ltaoo1o
        10
    ltaoo1o  
       2024-12-02 15:30:59 +08:00
    @flowercoder 前提是不用 ssh 登录服务器,那像你说的提供接口是最简单的方式了,其他考虑的无非就是安全、稳定
    fishlium
        11
    fishlium  
       2024-12-02 16:20:42 +08:00
    @flowercoder 关键是人家都上堡垒机,按理说你搞个面板顺便都能操作了,反正是我的话,我不会这么去操作的
    tf2
        12
    tf2  
       2024-12-02 16:21:34 +08:00
    哈哈哈,上古时代都是 ftp 部署的。。。
    paopjian
        13
    paopjian  
       2024-12-02 16:27:04 +08:00   1
    哪有这么难, 一个上传接口,上传完文件触发一个定时操作, 比如凌晨启动脚本, 清空 nginx/html, 解压 zip 文件到目录
    风险就是你跳过堡垒机,连操作日志都没有, 甚至更新记录都没写吧, 追究起来可不是小事
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1422 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 159ms UTC 16:48 PVG 00:48 LAX 08:48 JFK 11:48
    Do have faith in what you're doing.
    ubao msn 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