FastCGI is simple because it is actually CGI with only a few extensions.
Like CGI, FastCGI is also language-independent. For instance, FastCGI provides a way to improve the performance of the thousands of Perl applications that have been written for the Web.
Like CGI, FastCGI runs applications in processes isolated from the core Web server, which provides greater security than APIs. (APIs link application code into the core Web server, which means that a bug in one API-based application can corrupt another application or the core server; a malicious API-based application can, for example, steal key security secrets from another application or the core server.)
Although FastCGI cannot duplicate the universality of CGI overnight, the FastCGI developers are committed to propagating FastCGI as an open standard. To that end, free FastCGI application libraries (C/C++, Java, Perl, Tcl) and upgrade modules for popular free servers (Apache, ISS, Lighttpd) are available.
Like CGI, FastCGI is not tied to the internal architecture of any Web server and is therefore stable even when server technology changes. An API reflects the internal architecture of a Web server, so when that architecture changes, so does the API.
Not only does FastCGI restore the strengths of CGI, it also adds two new benefits:
Distributed computing: Companies can run their FastCGI application on a different machine from the one on which they run their Web server. Distributed computing is a proven technique for scaling, linking to existing corporate systems, improving system availability, and improving security via compartmentalization, such as firewalls.
Multiple and extensible roles: CGI applications compute the response to an HTTP request. FastCGI applications can do that and more, such as perform modular authentication and authorization checks and translate data from one type to another. FastCGI is designed so that more roles can be introduced in the future.
Development on FastCGI:
There is not much development on FastCGI because it is a very stable protocol / application.
But, yes, we are here…
Frequently asked questions, examples and explanations.
FastCGI White Paper
Describes the motivation for FastCGI, the FastCGI interface, FastCGI application roles, the FastCGI application library, and FastCGI performance.
Understanding FastCGI Application Performance
Why FastCGI applications often run faster than applications coded directly to Web server APIs.
FastCGI Developer’ Kit
How to configure and build the kit, and write applications using the FastCGI application libraries.
FastCGI Programmer’ Guide
Programmer-oriented documentation for developers of FastCGI applications. The content overlaps considerably with the Developer’s Kit document.
Defines the interface between a FastCGI application and the Web server.
FastCGI - A High-Performance Gateway Interface
Position paper presented at the workshop “Programming the Web – a search for APIs”, Fifth International World Wide Web Conference, 6 May 1996, Paris, France.
Rob’s Open Source ‘99 Presentations
Two FastCGI related presentations given at O’reilly’s Open Source ‘99 Conference in Monterey, CA.
From the Perl Conference (Applying Perl track):
|Scaling CGI with Perl||PowerPoint|
From the Apache Conference:
|The Apache FastCGI Implementation||PowerPoint|
The Apache FastCGI Process Manager
A description of some of the functionality of the process manager in mod_fastcgi. I’m not sure how accurate it is.
Servers that support FastCGI
- Apache - http://www.apache.org
- Nginx - http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
- Lighttpd :
- FastCGI Module : http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI
- FastCGI Usage : https://redmine.lighttpd.net/projects/1/wiki/docs_modfastcgi
- Cherokee - http://cherokee-project.com/doc/modules_handlers_fcgi.html
- Microsoft IIS
- (second generation) - http://www.coastrd.com/fastcgi which supports SIGTERM and the Aprellium Abyss server as well
- IIS >7 - https://www.iis.net/configreference/system.webserver/fastcgi
- Resin :
- Proxy Fastcgi to backend : http://wiki4.caucho.com/Application_Server:_Native_PHP_With_FastCGIServlet
- Front End : http://www.caucho.com/resin-4.0/changes/resin-4.0.0.xtp#fastcgisupport
- SunOne - https://docs.oracle.com/cd/E19146-01/821-1828/6nmpm01ns/index.html
- Premium thttpd http://schumann.cx/premium-thttpd/
- MyServer - http://www.myserverproject.net/
- Pi3Web - http://pi3web.sourceforge.net/
- Jetty - http://www.eclipse.org/jetty/documentation/current/fastcgi.html
- caddy web server https://caddyserver.com/docs/fastcgi
The FastCGI application libraries.
The Development Kit - C, C++, Perl, and Java, libraries as well as assorted documentation.
Current: download docs browse
- Fastcgi for Ruby
- FastCGI for .NET
- FastCGI / CGI C++ Library
- jFastCGI Servlet
- Go fcgi package
- Nodejs FastCGI
- kcgi – minimal CGI and FastCGI library in C
- Rust FastCGI package
- Lua FastCGI extension
- haskell FastCGI package
- FastCGI4D A Tango compatible FastCGI library for the D language
- TCL - TCL
- Common Lisp
- John Hinsdale’s module for CLISP
- Teemu Kalva’s module for CMUCL
- Goanna Eiffel - The Goanna Eiffel project includes a native implementation of FastCGI for use with its web application libraries.
- GNU Smalltalk
- Jeff Coffield’s VMS module.
Articles on FastCGI
- FastCGI — The Forgotten Treasur from Peter Simons
- FastCGI: Persistent Applications for Your Web Server from Paul Heinlein of linuxjournal