FastCGI
# FastCGI

FastCGI è un protocollo che permette di interfacciare programmi interattivi CGI con un server web. FastCGI è una variazione della prima Common Gateway Interface (CGI); lo scopo principale di FastCGI è quello di ottimizzare le risorse del sistema nell'interfacciamento tra il programma CGI e il server web, permettendo al server di gestire più richieste di pagina web assieme.

## Funzionamento

Invece di creare un nuovo processo per ogni richiesta, FastCGI usa i processi persistenti per gestire una serie di richieste. Questi processi sono posseduti dal server di FastCGI e non dal server web. Per rispondere a una richiesta entrante, il server web invia informazioni e la pagina richiesta ad un processo di FastCGI su un socket (nel caso che FastCGI sia installato sulla stessa macchina del server web) o con un collegamento TCP (in caso FastCGI sia installato su una macchina remota). La risposta viene rimandata dal processo al server web sullo stesso collegamento, e il sistema di server web di conseguenza consegna quella risposta all'utilizzatore finale. Il collegamento può essere chiuso alla fine di una risposta, ma i processi del server web e i processi del server di FastCGI persistono. Ogni processo di FastCGI può gestire molte richieste da quando è attivo, in tal modo si evita uno spreco di risorse richieste per la creazione di un processo e per la sua terminazione. Gli amministratori di un sito web possono trovare che la separazione delle applicazioni del server web in FastCGI ha molti vantaggi sugli interpreti dei vari linguaggi (mod_perl, mod_php, ecc.).

## Server Web che implementano FastCGI

* Abyss Web Server
* Apache HTTP Server (partial)
   * Implemented by mod_fcgid. This module used to be third-party, but was granted to the ASF as an Apache HTTP Server subproject in 2009, shepherded by Chris Darroch. It only supports UNIX sockets, no TCP sockets.
   * An older, no longer updated, third-party module mod_fastcgi is also being used. As of Apache 2.4.x, this module no longer compiles properly.
   * Multiplexing of requests through a single connection is prohibited by Apache 1.x design, so this isn't supported
   * In Apache 2.4, mod_proxy_fcgi was added, supporting TCP FastCGI servers.
* Cherokee HTTP Server
* HAProxy
* Hiawatha webserver
   * Loadbalancing FastCGI support
   * Supports chrooted FastCGI servers
* Lighttpd
* LiteSpeed Web Server
* Microsoft IIS
* Kerio WebSTAR
* Nginx
* Open Market Web Server
* pronghorn Web Server
* Resin Application Server
* Roxen Web Server
* Sun Java System Web Server
* Any Servlet container (such as Apache Tomcat or Jetty), using the JFastCGI library.
* Zeus Web Server
