为什么使用 php + fastcgi 时响应在 16k 处被截断?

为什么使用 php + fastcgi 时响应在 16k 处被截断?

我已经从源代码编译了 PHP 5.3.3 和 nginx 0.8.47 来运行 Wordpress 博客。Wordpress 生成的 RSS 源在大约 16k 处被截断(包括标题为 16k+90b)。通过将以下内容添加到我的 nginx 配置中:

fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

问题就解决了。然而,从我读到的Nginx 维基页面缓冲区仅确定缓冲何时会溢出到磁盘。没有任何迹象表明响应会因缓冲区太小而被截断。

所以我的问题是,为什么在更改此设置之前响应被截断了?看来请求不应该被截断,只是由于磁盘缓冲而速度稍慢一些。

附加信息:

  • Ubuntu 10.04.2 32位
  • 页面大小 4k

答案1

下列的Ochoto 的评论关于检查写入权限我成功地让它工作了。我以不同于默认用户的身份运行 Nginx,因此必须在默认临时路径上更改权限。对于 RHEL 安装,/var/lib/nginx/tmp/fastcgi它具有默认权限 700:

chown -R webuser /var/lib/nginx/tmp

我在 Scientific Linux 7 上遇到了这个问题,使用的是来自 SL 存储库的包。对于我来说,在 Scientific Linux 6 上使用 Nginx 提供的包时,这一步不是必需的,因为它在/var/cache/nginx

答案2

首先尝试查看 error_log(在信息级别,如果在信息级别没有打印任何相关内容,则尝试读取调试日志)。

答案3

将此文本复制到 nginx 的 conf 文件中

http {

        .....
        fastcgi_buffers 256 4k;
        .....
}

重启nginx后

相关内容