C语言FastCGI与Nginx问题如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (165)

我试图在Nginx Web服务器后面运行用C语言编写的fastcgi应用程序。Web浏览器从未完成加载,并且响应从未完成。我不知道如何处理它并进行调试。任何洞察力将不胜感激。

hello world应用程序从fastcgi.com取得并简化为如下所示:

#include "fcgi_stdio.h"
#include <stdlib.h>

int main(void)
{

 while(FCGI_Accept >= 0)
 {
  printf("Content-type: text/html\r\nStatus: 200 OK\r\n\r\n");

 }

  return 0;
}

输出可执行文件使用以下任一项执行:

cgi-fcgi -connect 127.0.0.1:9000 a.out

要么

spawn-fcgi -a120.0.0.1 -p9000 -n ./a.out

Nginx的配置是:

server {
        listen   80;
        server_name _;

 location / {
                        # host and port to fastcgi server
                        root   /home/user/www;
                        index  index.html;

                        fastcgi_pass 127.0.0.1:9000;
 }
}
提问于
用户回答回答于

你需要FCGI_Acceptwhile循环中调用:

while(FCGI_Accept() >= 0)

你有FCGI_Accept >= 0你的代码。我认为这会导致FCGI_Accept函数的地址被比较0。由于函数存在,比较永远不会是错误的,但函数没有被调用。

用户回答回答于

这里有一个很好的例子,包括nginx,ubuntu,c ++和fastcgi。

http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/

如果你想运行他的代码,我已经把它放入一个git repo中,并附带说明。你可以检查出来并为自己运行。我只在Ubuntu上测试过它。

https://github.com/homer6/fastcgi

扫码关注云+社区

领取腾讯云代金券