Welcome! Log In Create A New Profile

Advanced

upstream closed prematurely FastCGI stdout while reading response header from upstream

Alexander Skwar
December 15, 2010 06:18AM
Hi.

I'm trying to setup nginx 0.8.54 on a Solaris 10 system so, that it is able
to serve "normal" CGI scripts. I have read http://wiki.nginx.org/SimpleCGI
and tried to follow it - as it's not working, I guess I made some sort of
mistake…

When I check the access.log and error.log of nginx, I see the following when
a CGI script should be invoked ( http://nginx.pastebin.com/uY6PLbjU ):

==> access.log <==
10.0.1.49 - - [15/Dec/2010:11:17:48 +0100] "GET /cgi-bin/hw.cgi
HTTP/1.0" 502 383 "-" "Lynx/2.8.7rel.1 libwww-FM/2.14 SSL-MM/1.4.1
OpenSSL/0.9.8q" "-"

==> error.log <==
2010/12/15 11:17:48 [error] 28514#0: *3 upstream closed prematurely
FastCGI stdout while reading response header from upstream, client:
10.0.1.49, server: my.svr, request: "GET /cgi-bin/hw.cgi HTTP/1.0",
upstream: "fastcgi://unix:/var/opt/local/nginx/fastcgi_temp/perl_cgi-dispatch.sock:",
host: "my.svr"

And the client (lynx in the case above…) displays this output:
The page you are looking for is temporarily unavailable.
Please try again later.

In my nginx.conf (complete file at http://nginx.pastebin.com/QW9yWQGd ),
I've got:

[…]
http {
server {
listen 80;
server_name my.svr;
location ~ ^/cgi-bin/.*\.cgi$ {
root /data/www;
gzip off; #gzip makes scripts feel slower since they
have to complete before getting gzipped
fastcgi_pass
unix:/var/opt/local/nginx/fastcgi_temp/perl_cgi-dispatch.sock;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /data/www$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, finally, the handler "cgiwrap-fcgi.pl" is exactly the script from
the nginx wiki @ http://wiki.nginx.org/SimpleCGI

For now (while testing things), I start cgiwrap-fcgi.pl manually as
user "webservd". I see the following output on the terminal:

$ /opt/service/scripts/cgiwrap-fcgi.pl
FastCGI: manager (pid 17129): initialized
FastCGI: manager (pid 17129): server (pid 17130) started
FastCGI: server (pid 17130): initialized
FastCGI: manager (pid 17129): server (pid 17131) started
FastCGI: server (pid 17131): initialized

FastCGI: manager (pid 17129): server (pid 17130) exited with status 2304
FastCGI: manager (pid 17129): server (pid 17185) started
FastCGI: server (pid 17185): initialized

The last 3 lines got printed, when I ran "lynx -dump
http://my.svr/cgi-bin/hw.cgi".

$ ls -la /var/opt/local/nginx/fastcgi_temp
total 4
drwx------ 2 webservd webservd 3 Dec 15 11:58 .
drwxr-xr-x 8 webservd webservd 9 Dec 15 11:17 ..
srwxr-xr-x 1 webservd webservd 0 Dec 15 11:58 perl_cgi-dispatch.sock

nginx runs as user and group "webservd".

You can find all the links on: http://j.mp/bundles/alexs1977/5

Well, why does it not work? I "guess" that there is some sort of communication
going on between nginx and this fastcgi wrapper, because when I stop the
wrapper process, I get a different error message in error.log:

==> error.log <==
2010/12/15 12:03:01 [error] 28514#0: *7 connect() to
unix:/var/opt/local/nginx/fastcgi_temp/perl_cgi-dispatch.sock failed
(146: Connection refused) while connecting to upstream, client:
10.0.1.49, server: my.svr, request: "GET /cgi-bin/hw.cgi HTTP/1.0",
upstream: "fastcgi://unix:/var/opt/local/nginx/fastcgi_temp/perl_cgi-dispatch.sock:",
host: "my.svr"

The "hw.cgi" script has proper permissions:

-rwxr-xr-x 2 webservd webservd 93 2010-12-15 11:16 /data/www/cgi-bin/hw.cgi

If it doesn't (eg. if it's 0644), then I get the following output on
the "lynx term":
Error: No such CGI app - /data/www/cgi-bin/hw.cgi may not exist or is not execut
able by this process.

And I can run the hw.cgi script just fine:

$ /data/www/cgi-bin/hw.cgi
Content-type: text/html

<html><body>Hello, world.</body></html>

I'm out of ideas — what might be causing this problem?

Thanks a lot,

Alexander
--
↯    Lifestream (Twitter, Blog, …) ↣ http://alexs77.soup.io/     ↯
↯ Chat (Jabber/Google Talk) ↣ a.skwar@gmail.com , AIM: alexws77  ↯

_______________________________________________
nginx mailing list
nginx@nginx.org
http://nginx.org/mailman/listinfo/nginx
Subject Author Posted

upstream closed prematurely FastCGI stdout while reading response header from upstream

Alexander Skwar December 15, 2010 06:18AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 196
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready