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