2012/10/4 Ville Valkonen <weezeld...@gmail.com>:
> Hi,
>
> I've configured Nginx and FCGI to run some C/C++ apps, well almost.
>
> When navitaging to http://host.foo/weezel/progut/default.cgi nginx's error log
> states the following (below there is test.c, test.c == default.cgi):
>
> 2012/10/04 16:52:22 [error] 26690#0: *14 kevent() reported that connect()
> failed (61: Connection refused) while connecting to upstream, client:
> 192.168.50.102, server: host.foo, request: "GET /weezel/progut/ HTTP/1.1",
> upstream: "fastcgi://127.0.0.1:9001", host: "host.foo"
>
> ..and browser says HTTP Error 500 (Internal Server Error). I'd say the problem
> lies somewhere in nginx configuration since nc 127.0.0.1 9001 let's 
> connections
> in.
>
> So apparently I am missing something obvious here. Therefore any help will be
> appreciated. Here is the setup I've done so far:
>
Hi,

I'm not sure what you're exactly trying to do, is it cgi or fastcgi
you want to use?
i managed to get cgi working with fcgi-cgi, yet i didn't figure out how
to make use of fastcgi.
atleast under chroot i was receiving error about prematurely closed
connection while reading response header from upstream.
this was through unix socket. i launched the 'fastcgi processes'
by hand with spawn-fcgi, and saw them die one after another when
trying to access it via browser, to be clear, 1 process died per request,
and i had launched multiple w/-F arg for spawn-fcgi.
i'm not going to try debugging it any further, plain cgi is what i was after.

> [...]
>
> #### test.c
>
> #include <fcgi_stdio.h>
> #include <stdlib.h>
>
> int count;
>
> void
> initialize(void)
> {
>   count=0;
> }
>
> void
> main(void)
> {
>         initialize();
>
>         while (FCGI_Accept() >= 0)   {
>                 printf("Content-type: text/html\r\n"
>                         "\r\n"
>                         "<title>FastCGI Hello! (C, fcgi_stdio 
> library)</title>"
>                         "<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
>                         "Request number %d running on host <i>%s</i>\n",
>                          ++count, getenv("SERVER_HOSTNAME"));
>         }
> }
>
i

this is what i was testing plain cgi with, while the above does work,
there is no benefit for the extra w/o fastcgi, needs to be built w/-static:

#include <stdio.h>
int
main(void)
{
        printf("Content-type: text/plain\n\n");
        printf("req on host %s",
                getenv("SERVER_NAME"));
        return 0;
}


here is my ngix.conf for testing cgi:

worker_processes  1;

events {
    worker_connections  100;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  192.168.2.94;

        location = /cgi-bin {
            rewrite ^ /cgi-bin/ permanent;
        }
        location /cgi-bin/ {
            fastcgi_index default.cgi;
            fastcgi_pass unix:/fcgi.socket;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
            include fastcgi_params;
        }
        location / {
            root   /htdocs;
            index  index.html index.htm;
        }
    }
}


-Artturi

Reply via email to