nginx + cgi (программы на c ++)

1782
kometonja

Я застрял, настраивая мой nginx для работы с пользовательскими программами cgi (используя библиотеку xmlrpc-c).
Я пытаюсь с fcgiwrap / spawn-fcgi вот так:

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

Важный раздел файла nginx.conf будет

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

Я пробовал как файлы soceket, так и комбинации ipv4 / portnumber, но я получил ошибку:

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" 

Я также иногда получаю 502 Bad Gateway, если возиться с вариантами. Я пробовал каждую комбинацию, которую мог найти в Google (включая изменение файла /etc/nginx/fastcgi.conf) (обратите внимание, что в файле nginx.conf есть отдельные разделы для php cgi и для моих тестовых программ, php работает нормально)
Я застрял и не помог не знаете, как это настроить, я что-то упускаю?

эта часть особенно:

в nginx.conf
fastcgi_param SCRIPT_FILENAME / usr / share / nginx / html / cgi-bin / test / $ fastcgi_script_name; # не работает, сообщает об ошибке ниже
fastcgi_param SCRIPT_FILENAME / usr / share / nginx / html / cgi-bin / test / my_prog; #оно работает

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

У меня есть более чем одна программа, как установить исполняемый файл, чтобы не было исправлено (как my_prog выше)?

Спасибо

0

1 ответ на вопрос

0
Darth Android

It looks like nginx doesn't have permission to read/write the fastcgi socket:

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

You should make sure that the user account used to launch nginx can access the socket file created by fcgi. Are they both launched as the same user?

Я тоже это подозревал, пробовал как chmod a + rwx /tmp/fcgi.sock, а также запуск этих сервисов от имени root, та же ошибка (разрешение отклонено) kometonja 10 лет назад 0

Похожие вопросы