Katana VentraIP

Simple Common Gateway Interface

The Simple Common Gateway Interface (SCGI) is a protocol for applications to interface with HTTP servers, as an alternative to the CGI protocol. It is similar to FastCGI but is designed to be easier to parse. Unlike CGI, it permits a long-running service process to continue serving requests, thus avoiding delays in responding to requests due to setup overhead (such as connecting to a database).

"SCGI" redirects here. For the airport with that code, see San Guillermo Airport.

SCGI is a protocol which defines communication between a web server and an application server. This is in contrast to CGI, which is an earlier application (gateway) interface designed to let the application programmer avoid the complexity of sockets and long-running service processes when poor scalability and high overhead are acceptable.


The SCGI protocol leverages the fact that the web server has already parsed and validated the HTTP request, and canonically communicates the request to the SCGI server while letting the application programmer avoid parsing ambiguities and protocol edge cases. This avoids the complicated header-parsing and header-combining rules from RFC 2616, saving significant complexity in the SCGI server process.

History[edit]

Neil Schemenauer published the original SCGI protocol specification dated October 2001.[1] He developed the first implementations of SCGI and initially published them in April 2002.[2]

Apache HTTP Server

Cherokee

Lighttpd

Microsoft with ISAPI SCGI extension

Internet Information Services

nginx

Althttpd

[3]

(this list is not complete)

Cobra

with the arsd.cgi library

D

with the url-scgi library

Emacs Lisp

Haskell

with the SCGI connector or with the [1] library

Java

Lisp

with the SCGI package or Plack framework

Perl

PHP

Python

with the scgi library

Racket

Ruby

with the tokio-scgi crate

Rust

Scheme

Tcl

Nim

SCGI can be implemented in any language that supports network sockets and netstrings. The following is a partial list of languages with known SCGI bindings:

- Launches a child process per request

Common Gateway Interface(CGI)

- Attempts to increase scalability by supporting long-running CGI-like processes

FastCGI

- A binary protocol intended to proxy requests between a web server and an application server.

Apache JServ Protocol

Application/Gateway protocols:


Application hosts (language-specific):

Edit this at Wikidata

Official website

SCGI protocol specification