C language FastCGI with Nginx

后端 未结 5 1409
挽巷
挽巷 2020-12-25 14:51

I am attempting to run a fastcgi app written in C language behind the Nginx web server. The web browser never finishes loading and the response never completes. I am not sur

相关标签:
5条回答
  • 2020-12-25 15:26

    You need to call FCGI_Accept in the while loop:

    while(FCGI_Accept() >= 0)
    

    You have FCGI_Accept >= 0 in your code. I think that results in the address of the FCGI_Accept function being compared to 0. Since the function exists, the comparison is never false, but the function is not being invoked.

    0 讨论(0)
  • 2020-12-25 15:28

    After your application handles fastcgi-requests correctly, you need to take care of starting the application. nginx will never spawn fcgi processes itself, so you need a daemon taking care of that.

    I recommend using uwsgi for managing fcgi processes. It is capable of spawning worker-processes that are ready for input, and restarting them when they die. It is highly configurable and easy to install and use.

    http://uwsgi-docs.readthedocs.org/en/latest/

    Here is my config:

    [uwsgi]
    fastcgi-socket = /var/run/apc.sock
    protocol = fastcgi
    worker-exec = /home/app/src/apc.bin
    spooler = /home/app/spooler/
    processes = 15
    enable-threads = true
    master = true
    chdir = /home/app/
    chmod-socket = 777
    

    This integrates nicely as systemd service, but can also run without.

    0 讨论(0)
  • 2020-12-25 15:31

    Here's a great example of nginx, ubuntu, c++ and fastcgi.

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

    If you want to run his code, I've put it into a git repo with instructions. You can check it out and run it for yourself. I've only tested it on Ubuntu.

    https://github.com/homer6/fastcgi

    0 讨论(0)
  • 2020-12-25 15:32

    Try with:

    $ cgi-fcgi -start -connect localhost:9000 ./hello
    

    It works for me. I'm using archlinux and following the instructions at:

    https://wiki.archlinux.org/index.php/Nginx

    0 讨论(0)
  • 2020-12-25 15:46

    You can try this https://github.com/Taymindis/ngx-c-handler

    It is built on top on fastcgi, It handle multiple request, and there are some core feature as well. It can handler function mapping with nginx.

    To startup a nginx with c/c++ language https://github.com/Taymindis/ngx-c-handler/wiki/How-to-build-a-cpp-service-as-c-service-interface

    0 讨论(0)
提交回复
热议问题