如何使用Nginx或openresty进行大文件上传限速

183 views
Skip to first unread message

Curricane Chen

unread,
Jun 10, 2021, 5:44:38 AM6/10/21
to openresty
背景:
公司业务是做云存储的,每天有大量的大文件上传,但单个用户可能会进行多个并发,容易占据大量的上传的带宽,因此想需要进行限速。而因为业务的问题,上传请求过来,通过upstream 给到上游服务器,因为文件很大,在 nginx 中使用了 proxy_request_buffering off 让body可以不在nginx缓存,直接转发给上游服务器。
问题:
如何做到类似 proxy_request_buffering off ,nginx不缓存body,直接转发给上游服务的同时,进行上传限速。
目前的思考方案:
1,开发nginx第三方模块,在input filter 进行上传限速,但这块不熟,不知道行不行得通,值github上找到一个例子。https://github.com/cfsego/limit_upload_rate/blob/master/ngx_http_limit_upload_module.c
2,使用openresty,之前有在讨论中看到说可以resty接口模拟input filter阶段,但我看有个人的实现,担心用lua来做,只能先把body读下来,再传给上游。也有个例子

so,请各位大佬指点下,能不能做,该怎么处理
Reply all
Reply to author
Forward
0 new messages