我有Nginx代理的这个node.js应用程序(正在生产)。路线是这样的:
exports.download = function(req, res){
var id = req.params.id;
if (id && id == 'latest')
{
res.download(config.items.release_directory+'/<1.6GB-file>.zip', function(err){
if (err) {
console.log(err);
} else {
// do something
}
});
}
else
{
res.redirect(301, '/');
}
};
因此,单击正确的路径/ URL,浏览器将开始下载大文件,但随后它总是停止在1.08GB(文件约为1.6GB)处,并被截断。
我真的不明白为什么。有任何想法吗?
编辑:config.items.release_directory是一个静态Express目录,声明为:
app.use('/releases', express.static(path.join(__dirname, '..', 'releases')));
EDIT2:在带有grunt的开发中,无需Nginx即可直接提供应用程序,效果很好。
已解决:请阅读以下评论,问题是Nginx中的proxy_max_temp_file_size变量
这里的问题是nginx配置,而不是nodejs代码。
nginx在将临时文件发送到客户端之前在磁盘中写入临时文件,如果站点将要提供大型静态文件,则最好禁用此缓存,例如:
location / {
proxy_max_temp_file_size 0;
}
(没有限制)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句