C fast-cgi implementation
    Charles McGarvey 
    onefriedrice at brokenzipper.com
       
    Sat Apr 25 09:32:16 MSD 2009
    
    
  
Huy Phan wrote:
> Charles McGarvey <onefriedrice at ...> writes:
>
>   
>> http://www.fastcgi.com/drupal/node/5
>>
>> Download the "Development Kit" which includes a C library implementation
>> of FastCGI and C/C++ examples.  The library is very easy to learn, so
>> you should be up and running quickly.  Read the fcgiapp.h file to get going.
>>
>> Cheers,
>> Chaz
>>
>>     
>
> Thanks for this page, 
> I see that Nginx has the module NginxHttpFcgiModule which allows Nginx to
> interact with FastCGI processes, but we have to start the fastcgi server myself. 
> I wrote the code with FastCGI Dev Kit but don't know how to start the FastCGI
> server with it.
> The document from fastcgi.com only mentions about servers that support FastCGI
> and execute itself.
>   
Here's some sample code to help you get started (may not compile but you
get the idea):
#include <fcgiapp.h>
int main()
{
    int sockfd = FCGX_OpenSocket("/var/run/myfcgiserver.sock", 1024);
    FCGX_Request request;
    FCGX_Init();
    FCGX_InitRequest(&request, sockfd, 0);
    while (FCGX_Accept_r(&request) == 0)
    {
        FCGX_FPrintF(request.out, "Content-type: text/html\r\n"
                "\r\n")
            "<h1>Hello World!</h1>");
        FCGX_Finish_r(&request);
    }
}
You're right, nginx won't start your fastcgi server for you, so just run
it yourself.  Personally, I find it easy enough to just create an init
script for any fcgi app I want running.
Then configure nginx something like this:
        location ~ fcgi-bin/.*$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass    unix:/var/run/myfcgiserver.sock;
            fastcgi_index    whatever;
        }
With this, any request to yourserver/fcgi-bin/... will be sent to your
fastcgi server.
One final note: If you want to use TCP rather than a unix socket, change
the first argument of FCGX_OpenSocket to ":portnum" (i.e. ":2000" -- you
need the colon).  Then use "fastcgi_pass  yourfcgiserver:2000;" in the
nginx config.
Hope that helps..
--Chaz
    
    
More information about the nginx
mailing list