nginx 代理 s3 请求时,如何在 nginx 添加 s3 签名认证,防止未认证用户并发上传文件,导致内存爆掉

2019-10-28 18:39:02 +08:00
 bruceliang
3277 次点击
所在节点    NGINX
11 条回复
janxin
2019-10-28 18:45:25 +08:00
未认证用户指哪些人? S3 没认证的还是什么样的?
fredcc
2019-10-28 18:55:56 +08:00
终端用户获取临时权限上传到 s3 有官方例子,问题是 nginx 是怎么多出来的
bruceliang
2019-10-28 18:57:29 +08:00
其实就是防止用户恶意访问
bruceliang
2019-10-28 18:58:44 +08:00
我们用的 ceph,nginx 代理 ceph s3
bruceliang
2019-10-28 19:00:49 +08:00
如果未携带 s3 签名或者未携带签名的用户大量上传文件到 nginx 是不是会导致 nginx 宕机
eason1874
2019-10-28 19:28:47 +08:00
Nginx 鉴权我都是用 ngx_lua 模块,各种哈希算法都有现成函数可以用,简单好用,性能也好。

连接: https://github.com/openresty/lua-nginx-module
Firxiao
2019-10-28 22:17:22 +08:00
不会的。如果是后端服务器做鉴权,这个连接就被拒绝了。不可能上传成功的。防止用户恶意访问可以写个监控脚本检测 ip 连接数,超过多少封掉。或者用 iptable 来限制单个 ip 最大连接数。
DavidWei
2019-10-29 07:09:26 +08:00
s3 有 presinedurl 上传方式,为啥需要再代理一次?换个思路,你控制签名的下发就好了
bruceliang
2019-10-29 15:54:01 +08:00
@Firxiao 文件上传,nginx 服务器会先缓存在 nginx 服务器,然后转发到后端服务器的
bruceliang
2019-10-29 16:26:30 +08:00
如果数据全部缓存到内存,内存可能会撑爆;如果全部放硬盘,硬盘可能会撑爆
Firxiao
2019-10-31 15:10:35 +08:00
@bruceliang s3 的标准认证第一步是鉴权 只有鉴权通过才可以上传. 你说的这个情况应该是可以直接接受 put 操作的应用. 建议你做下相关测试, 从日志里面分析下. FYI 并深入了解下 s3 的鉴权机制.

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

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

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

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

© 2021 V2EX