user959129
user959129

Reputation:

nginx, fastcgi and 502 errors wiht spawn issues

I am trying to get fastcgi to work on nginx. I know the config file is correct becuase it worked before and i suspect my c++ program and how I set the fcgi file to be read by nginx. These are the steps I undertake. I am using Ubuntu, nginx, c++ with fastcgi. What did I do wrong?

1) Compile the program

g++ -o rtbCookieServer.fcgi rtbCookieServer.o -lfcgi++ -lboost_system -lcgicc -L/home/cpp/mongo-cxx-driver-v2.0 -I/home/cpp/mongo-cxx-driver-v2.0/mongo

2) move rtbCookieServer.fcgi into /var/www

3) sudo /var/www chmod a+x rtbCookieServer.fcgi

4) Run the below

spawn-fcgi.standalone -u root -g root -G www-data -a 127.0.0.1 -p 9000 -f /var/www/rtbCookieServer.fcgi 
spawn-fcgi: child spawned successfully: PID: 2398

if I try and run the command as root I get this:

spawn-fcgi: I will not set uid to 0

5) browse to http://127.0.0.1/rtbCookieServer.fcgi where I get a 502 error and this error in my log file

2012/01/23 15:19:03 [error] 1189#0: *1 upstream closed prematurely FastCGI stdout while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /rtbCookieServer.fcgi HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1"

When I look what is listening on port 9000 I get the below alomg with some other diagnostics:

    sudo lsof -i :9000
    COMMAND    PID         USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    rtbCookie 2398 marktest    0u  IPv4  17598      0t0  TCP localhost:9000 (LISTEN)

    netstat -an | grep 9000
    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

    ps auxww | grep rtbCookieServer.fcgi 
    1000      2398  0.0  0.0  24616   360 ?        Ss   15:08   0:00 /var/www/rtbCookieServer.fcgi

Now..1) why does the command say rtbCookie and not rtbCookieServer? even when I kill the process and rerun the spawn command ...still says rtbCookie. Should it not say rtbCookieServer? Also, why does it say marktest for user rather than root?

for Diagnostis I run ./rtbCookieServer.fcgi --9000 and the get the expected output.

Here are my file permissions.

-rwxr-xr-x  1 root root 1580470 2012-01-23 14:28 rtbCookieServer.fcgi

Here is my config file:

server {
    listen   80;
    server_name localhost;


            location ~ \.fcgi$ {
                    root   /var/www;
                    include /etc/nginx/fastcgi_params;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.html;
                    fastcgi_param  SCRIPT_FILENAME  /$fastcgi_script_name;
                    include fastcgi_params;
            }
    }

Upvotes: 0

Views: 1323

Answers (1)

Eelke
Eelke

Reputation: 21993

It says rtbCookie because lsof uses fixed width columns and rtbCookie is all that fits.

Sounds like it get's confused while it is processing the headers you send back. I suspect you have a slight formatting error in your response. Each header should end with \r\n Between the last header and the body of your response must be an empty line also ending with \r\n

Upvotes: 1

Related Questions