Servir um fastcgi pelo nginx

3

Eu tenho um "hello world" fastcgi rodando em 127.0.0.1:9000 e gostaria de servi-lo via nginx. Eu adicionei as seguintes linhas ao bloco http nginx.conf:

server {
    listen public.ip.address.here:80;
    server_name $host;

    location / {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
    }
}

No entanto, em vez de obter a saída do fastcgi, recebo apenas uma resposta do 502 Bad Gateway.

error_log diz: [error] 1924#0: *1 upstream prematurely closed FastCGI stdout while reading response header from upstream, client: myIP, server: $host, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "public.ip.address.here"

    
por thpetrus 31.01.2013 / 14:36

3 respostas

0

Isso soa como o problema real está no seu aplicativo FastCGI. Dê uma olhada no registro de erros ou em outra saída que possa ter produzido.

Em geral, pode ser que você precise de mais configurações do FastCGI para passar dados para o seu aplicativo. Uma configuração maior pode incluir coisas como essas configurações:

fastcgi_param  SCRIPT_FILENAME    $document_root$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  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  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

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;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Novamente, a saída do seu aplicativo FastCGI deve lhe dizer mais, também pode ser um problema completamente não relacionado ao nginx

    
por 31.01.2013 / 15:05
3

Eu encontrei este mesmo problema quando esqueci de converter meu CGI em um FastCGI adicionando essas três linhas de saída antes do conteúdo do CGI:

print "HTTP/1.0 200 OK"
print "Content-type: text/plain"
print ""
    
por 10.10.2016 / 21:13
0

Caso isso possa ajudar alguém com os mesmos sintomas descritos acima:

No meu caso, o parâmetro REQUEST_URI estava sendo configurado corretamente em um arquivo conf específico do módulo incluído no arquivo nginx.conf. No entanto, como o arquivo fastcgi_params também estava sendo incluído, o REQUEST_URI foi duplamente especificado. Comentando-o no arquivo fastcgi_params, o problema foi corrigido.

    
por 26.05.2016 / 20:23

Tags