nginx + cgi(c++ 程序)

nginx + cgi(c++ 程序)

我无法将 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。我尝试了谷歌搜索到的所有组合(包括修改 /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)?

谢谢

答案1

看起来 nginx 没有读取/写入 fastcgi 套接字的权限:

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

您应该确保用于启动 nginx 的用户帐户可以访问 fcgi 创建的套接字文件。它们都是以同一用户身份启动的吗?

相关内容