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

10 天前
 flowercoder

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

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

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

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

接口可以加个验证机制比如请求头必须包含 xxx 字符串
flowercoder
10 天前
@li1218040201 我昨天用豆包写了一下,它给的答案是能写的,我准备这个接口除了要 token 外再一个 sercet 密钥一起提高安全性。我打算是把文件夹下文件都删了再解压,替换我怕有问题,前端不是我,我只管后端和维护。我想到的是能不能还有简单暴力的方式,或是直接把这种更新前端静态文件的功能做个模块封装一下开发是否更合理一点?
flowercoder
10 天前
@fishlium 不是对公众的,只对甲方的内部几个部门用的,连域名都没申请
ltaoo1o
10 天前
@flowercoder 前提是不用 ssh 登录服务器,那像你说的提供接口是最简单的方式了,其他考虑的无非就是安全、稳定
fishlium
10 天前
@flowercoder 关键是人家都上堡垒机,按理说你搞个面板顺便都能操作了,反正是我的话,我不会这么去操作的
lambdaq
10 天前
哈哈哈,上古时代都是 ftp 部署的。。。
paopjian
10 天前
哪有这么难, 一个上传接口,上传完文件触发一个定时操作, 比如凌晨启动脚本, 清空 nginx/html, 解压 zip 文件到目录
风险就是你跳过堡垒机,连操作日志都没有, 甚至更新记录都没写吧, 追究起来可不是小事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1094311

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX