nginx + cgi (programas em c ++)

1

Eu estou preso definindo meu nginx para trabalhar com programas cgi personalizados (usando a biblioteca xmlrpc-c).
Estou tentando com fcgiwrap / spawn-fcgi assim:

$ spawn-fcgi -f /usr/bin/fcgiwrap -s /tmp/fcgi.sock

Seção importante do arquivo nginx.conf seria

location /cgi-bin/test {
        root /usr/share/nginx/html/cgi-bin/test/;
        include /etc/nginx/fastcgi.conf;

        #fastcgi_pass   127.0.0.1:8000;
        fastcgi_pass unix:/tmp/fcgi.sock;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/cgi-bin/test$fastcgi_script_name;

    }

Eu tentei ambos os arquivos de soquete e ipv4 / número de porta combinações, mas eu tenho erro:

2013/08/22 18:52:55 [notice] 1645#0: signal process started
2013/08/22 18:52:57 [crit] 1653#0: *1 connect() to unix:/tmp/fcgi.sock failed (13:             Permission denied) 
while connecting to upstream, client: 127.0.0.1, server: localhost,request: "POST /cgi-bin/test/listaccounta HTTP/1.1", upstream: "fastcgi://unix:/tmp/fcgi.sock:", host: "localhost", referrer: "http://localhost/some_page.php"

Eu também recebo 502 Bad Gateway, às vezes, se eu mexer com as opções. Eu tentei todas as combinações que consegui no google (inclui a modificação do arquivo /etc/nginx/fastcgi.conf) (note que existem seções separadas no nginx.conf para php cgi e para meus programas de teste, o php funciona bem)
Estou preso e não sei como configurá-lo, estou perdendo alguma coisa?

esta parte especialmente:

em nginx.conf
fastcgi_param SCRIPT_FILENAME / usr / share / nginx / html / cgi-bin / teste / $ fastcgi_script_name; # não funciona, relata erro abaixo
fastcgi_param SCRIPT_FILENAME / usr / share / nginx / html / cgi-bin / teste / my_prog; #funciona

Cannot get script name, are DOCUMENT_ROOT and SCRIPT_NAME (or SCRIPT_FILENAME) set and is the script executable?  

Eu tenho mais de um programa, como definir o executável para não ser corrigido (como my_prog acima)?

obrigado

kometonja
fonte

Respostas:

0

Parece que o nginx não tem permissão para ler / escrever o socket fastcgi:

2013/08/22 18:52:57 [crit] 1653#0: *1 connect() to unix:/tmp/fcgi.sock failed (13:             Permission denied)

Você deve se certificar de que a conta de usuário usada para iniciar o nginx pode acessar o arquivo de soquete criado pelo fcgi. Ambos são lançados como o mesmo usuário?

Darth Android
fonte
Eu suspeitei disso também, tentei chmod a + rwx /tmp/fcgi.sock, bem como executar esses serviços como root, mesmo erro (permissão negada)
kometonja