码迷,mamicode.com
首页 > 其他好文 > 详细

【转】Nginx+fastcgi文件下载不全

时间:2014-10-13 13:51:59      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   ar   文件   sp   数据   on   ad   

今天发现服务器上老是出现文件下载不全的情况,以前一直以为是网络不稳定的原因引起的,后来发现不是的。是ng的配置的原因。

    先简单的说一下 Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。

比如如下配置:

fastcgi_buffers      8 4K;  fastcgi_buffer_size  4K;

fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8*4K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2*4K 共 2 个 buffers。

当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。

此时如果fastcgi_temp的目录权限不对的话,ng的使用者不能访问这个temp目录,这时就会出现只下载一部分的情况。生成的页面大小达到了 100+ Kb,内存中缓冲了 36Kb,剩下的会写入的文件中。而实际的情况是,运行 Nginx Process 的用户并没有 fastcgi_temp 目录的写权限,于是剩下的数据就丢失掉了。

解决方法:直接将fastcgi_temp的目录权限设置成nginx Process的用户能进行读写的权限就可以了。


【转】Nginx+fastcgi文件下载不全

标签:style   color   使用   ar   文件   sp   数据   on   ad   

原文地址:http://my.oschina.net/sanpeterguo/blog/330064

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!