Nginx和fcgiwrap,增量输出问题

当我在Apache下运行一个cgi脚本时,任何输出都会快速发送到客户端。 但是,当我用fcgiwrap在nginx下运行它时,似乎没有任何东西被发送到客户端,直到脚本完成或产生大量的输出。

以下脚本可以看到这种行为。

#!/bin/bash echo "Content-type: text/html" echo while : do echo this is a test. sleep 5 done 

在apache下,客户端将每5秒钟获取一些数据。

在nginx和fcgiwrap下,我没有得到任何数据和网关超时。

nginx和fcgiwrap是来自Debian Jessie的软件包。 版本1.1.0-5和1.6.2-5 + deb8u4

所以问题

  1. 有谁知道这是什么负责这种行为? nginx本身? fcgiwrap? 都?
  2. 是否可以通过configuration来修复?
  3. 如果这是一个fcgiwrap问题,有没有替代cgi包装可用,不会遇到问题?

好吧,算出来。 似乎nginx和fcgiwrap都有不合需要的缓冲。 对于nginx来说,似乎可以通过configuration禁用,而fcgiwrap需要一个补丁。

我已经在http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863478发布了fcgiwrap的debdiff,这增加了一个新选项NO_BUFFERING

然后,nginxconfiguration需要改变,将NO_BUFFERING选项传递给fcgiwrap,并禁用nginx内部的缓冲区。

为此,我在“include fastcgi_params;”之前和之后立即添加了一些设置。 线。

  #note: NO_BUFFERING relies on a patched fcgiwrap. fastcgi_param NO_BUFFERING 1; include fastcgi_params; gzip off; fastcgi_buffering off;