V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
flowercoder
V2EX  ›  问与答

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

  •  
  •   flowercoder · 10 天前 · 693 次点击

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

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

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

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

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