nginx + cgi (C ++ - Programme)

1862
kometonja

Ich bin fest damit beschäftigt, meinen Nginx so einzustellen, dass er mit benutzerdefinierten CGI-Programmen arbeitet (unter Verwendung der Bibliothek xmlrpc-c).
Ich versuche es mit fcgiwrap / spawn-fcgi so:

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

Ein wichtiger Abschnitt der Datei nginx.conf wäre

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;  } 

Ich habe sowohl soceket-Dateien als auch Kombinationen von ipv4 / portnummer ausprobiert, aber ich habe eine Fehlermeldung erhalten:

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" 

Ich bekomme auch manchmal 502 Bad Gateway, wenn ich mich mit Optionen beschäftige. Ich habe jede Kombination habe ich versucht, Google könnte (einschließlich /etc/nginx/fastcgi.conf Datei ändern) (beachten Sie, es gibt separate Abschnitte in nginx.conf für php cgi und für meine Testprogramme, php funktioniert gut)
Ich bin fest und don Ich weiß nicht, wie man es konfiguriert, verpasse ich etwas?

dieser Teil besonders:

in nginx.conf
fastcgi_param SCRIPT_FILENAME / usr / share / nginx / html / cgi-bin / test / $ fastcgi_script_name; # funktioniert nicht, meldet einen Fehler unter
fastcgi_param SCRIPT_FILENAME / usr / share / nginx / html / cgi-bin / test / my_prog; #Es klappt

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

Ich habe mehr als ein Programm, wie kann man festlegen, dass die ausführbare Datei nicht fixiert wird (wie my_prog oben)?

Vielen Dank

0

1 Antwort auf die Frage

0
Darth Android

Es sieht so aus, als hätte nginx keine Berechtigung, den fastcgi-Socket zu lesen / schreiben:

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

Sie sollten sicherstellen, dass das zum Starten von nginx verwendete Benutzerkonto auf die von fcgi erstellte Socket-Datei zugreifen kann. Werden beide als derselbe Benutzer gestartet?

Ich vermutete dies auch, versuchte sowohl chmod a + rwx /tmp/fcgi.sock als auch diese Dienste als root auszuführen, gleicher Fehler (Erlaubnis verweigert) kometonja vor 10 Jahren 0