新手问题 使用 Unicorn 的 ROR 项目,提供文件下载的问题

lup165340815 · 2015年03月18日 · 最后由 reyesyang 回复于 2015年03月18日 · 1943 次阅读

如题,我远程请求下载该项目中的某个文件 (18MB),每次下到 15mb 的时候就显示连接中断,停止下载。一开始以为是 unicorn 用了服务器上的 nginx 代理,在 nginx 的配置文件中折腾了一番没用。后来发现在 unicorn 的配置文件中忘了添加 timeout 参数,缺省好像是 65s。我的理解是下载文件的时候考虑到网速的因素,服务器响应时间超过了 unicorn 设置的最大值因此连接中断。将此参数设为 300 后可以下载了 (200kb/s)。但如果是一个比较大的文件 (几个 G),不可能用这种蹩脚的方法。是否有利用单独开辟进程 stream 传输的方式或者 gem 来实现?

动态文件?你能确实文件大小,就可以先生成在某个目录吧,然后直接走 nginx

#1 楼 @xxqfamous 文件大小不确定。你的意思是文件上传成功后通过请求 nginx 服务器下载该文件? 那会不会也有同样的问题呢?

文件的问题,交给 Nginx 处理

在 config/environments/production.yml 中开启 config.action_dispatch.x_sendfile_header 配置

需要 登录 后方可回复, 如果你还没有账号请 注册新账号