V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
bruceliang
V2EX  ›  NGINX

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

  •  
  •   bruceliang · 2019-10-28 18:39:02 +08:00 · 3083 次点击
    这是一个创建于 1614 天前的主题,其中的信息可能已经有所发展或是发生改变。
    11 条回复    2019-10-31 15:10:35 +08:00
    janxin
        1
    janxin  
       2019-10-28 18:45:25 +08:00
    未认证用户指哪些人? S3 没认证的还是什么样的?
    fredcc
        2
    fredcc  
       2019-10-28 18:55:56 +08:00 via Android
    终端用户获取临时权限上传到 s3 有官方例子,问题是 nginx 是怎么多出来的
    bruceliang
        3
    bruceliang  
    OP
       2019-10-28 18:57:29 +08:00
    其实就是防止用户恶意访问
    bruceliang
        4
    bruceliang  
    OP
       2019-10-28 18:58:44 +08:00
    我们用的 ceph,nginx 代理 ceph s3
    bruceliang
        5
    bruceliang  
    OP
       2019-10-28 19:00:49 +08:00
    如果未携带 s3 签名或者未携带签名的用户大量上传文件到 nginx 是不是会导致 nginx 宕机
    eason1874
        6
    eason1874  
       2019-10-28 19:28:47 +08:00
    Nginx 鉴权我都是用 ngx_lua 模块,各种哈希算法都有现成函数可以用,简单好用,性能也好。

    连接: https://github.com/openresty/lua-nginx-module
    Firxiao
        7
    Firxiao  
       2019-10-28 22:17:22 +08:00
    不会的。如果是后端服务器做鉴权,这个连接就被拒绝了。不可能上传成功的。防止用户恶意访问可以写个监控脚本检测 ip 连接数,超过多少封掉。或者用 iptable 来限制单个 ip 最大连接数。
    DavidWei
        8
    DavidWei  
       2019-10-29 07:09:26 +08:00 via iPhone
    s3 有 presinedurl 上传方式,为啥需要再代理一次?换个思路,你控制签名的下发就好了
    bruceliang
        9
    bruceliang  
    OP
       2019-10-29 15:54:01 +08:00
    @Firxiao 文件上传,nginx 服务器会先缓存在 nginx 服务器,然后转发到后端服务器的
    bruceliang
        10
    bruceliang  
    OP
       2019-10-29 16:26:30 +08:00
    如果数据全部缓存到内存,内存可能会撑爆;如果全部放硬盘,硬盘可能会撑爆
    Firxiao
        11
    Firxiao  
       2019-10-31 15:10:35 +08:00
    @bruceliang s3 的标准认证第一步是鉴权 只有鉴权通过才可以上传. 你说的这个情况应该是可以直接接受 put 操作的应用. 建议你做下相关测试, 从日志里面分析下. FYI 并深入了解下 s3 的鉴权机制.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2598 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:36 · PVG 23:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.