Perl fastcgi buffering problem

Hi,

Im trying to see how certain Perl CGI scripts will
work on nginx. Im using nginx stable on Solaris 10
x86.

My configuration:

Perl CGI support: nginx-fcgi-0.4.3
http://www.nginx.eu/nginx-fcgi.html

nginx.conf:

location ~ ^/cgi-bin/.*.cgi$ {
gzip off;
fastcgi_pass
unix:/opt/sdr/report/ws/fastcgi_temp/nginx-fcgi.sock;
fastcgi_read_timeout 5m;
fastcgi_index index.cgi;
fastcgi_buffers 8 4k;
fastcgi_max_temp_file_size 0;
#
# You may copy and paste the lines under or use include
directive
# include /etc/nginx/nginx-fcgi.conf;
# In this example all is in one file
#
fastcgi_param SCRIPT_FILENAME
/opt/sdr/report/docroot/$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}

and a simple script which should output the stdout to browser:

##############################################################
use strict;

print “$ENV{SERVER_PROTOCOL} 200 OK\n”;
print “Server: $ENV{SERVER_SOFTWARE}\n”;
print “Content-type: text/plain\n\n”;

print “Starting for…\n”;
$|=1;

for (my $i = 1; $i <= 5; $i++) {
print “Iteration: $i\n”;
sleep 1;
}

print “All done\n”;

This example uses non-parsed headers, like old days for Apache < 1.x
where
the server buffered the output of std CGI scripts. Passing:

print “$ENV{SERVER_PROTOCOL} 200 OK\n”;
print “Server: $ENV{SERVER_SOFTWARE}\n”;

should output directly to the browser the results, but it does not.
Found out about: fastcgi_max_temp_file_size but that did not help.

Any ideas how can I see immediately the results from a simple CGI
script in nginx/fcgi ?

thanks,
Stefan

On 19:50 Sun 14 Mar , Stefan P. wrote:

Probable due the FastCGI specs in buffering the output.

stefan

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs