【发布时间】:2015-05-22 21:39:14
【问题描述】:
我想在屏蔽 S3 存储桶名称/身份验证标头的同时将文件上传到 S3。据我了解,我可以使用 Nginx 做到这一点。
例如,用户将向http://media.mywebsite.com 执行POST 请求,然后该请求将通过Nginx,附加身份验证标头并上传文件。另外,我想给每个文件一个随机且唯一的名称,并在对用户的响应中返回文件上传位置的 URL。
我该怎么做?我需要 Nginx 背后的其他东西,还是 Nginx 可以处理所有这些?我以前没用过 Nginx,所以请善待。
目前,我正在通过多部分请求将文件上传到我的 Rails 服务器,但是当执行较大的上传时,这会使服务器锁定太久,所以我试图绕过 Rails。
【问题讨论】:
-
您可以代理 GET,如果您可以传递所需的标头来管理 S3 身份验证,为什么不为 POST 这样做
-
所以只使用 Nginx 代理 S3?真的这么简单吗?
-
它需要一些工作,但你可以从那里开始coderwall.com/p/rlguog/…coderwall.com/p/swgfvw/…
-
我们确实绕过后端进行 S3 文件上传。 Nginx 收到请求,将文件转储到磁盘上(客户端请求)并通过 proxy_pass 进行回调。回调在后台队列上触发一个事件,该事件通过异步方式处理 S3 上传。
-
@mikhailov 我已经整理了一些东西,如果你有几分钟的时间来看看,我很想看看你的想法。
nginx.conf在配置文件夹中。 github.com/jamescmartinez/nginx-s3-upload
标签: ruby-on-rails file-upload nginx amazon-s3