- SCGI
-
Das Simple Common Gateway Interface (SCGI) ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfragen bearbeitet. Es ist eine Alternative zu klassischem CGI und ähnelt dem FastCGI Protokoll.
Die Spezifikation wurde von Neil Schemenauer <nas@python.ca> erstellt und am 12. Januar 2006 als gemeinfreie Spezifikation veröffentlicht. Im Vergleich mit FastCGI ist das SCGI Protokoll einfacher zu implementieren; die modernen Webserver bieten mittlerweile gleichermaßen Unterstützung für das FastCGI und das SCGI Protokoll.
Inhaltsverzeichnis
Protokollbeschreibung
Der Webserver öffnet für jeden Request eine eigene Verbindung zur SCGI-Applikation und beginnt mit dem Versenden eines Parameterblocks. Der Parameterblock ist als Netstring kodiert (Netstrings beginnen mit einer Ascii-dezimalen Längenangabe, gefolgt von einem Ascii-dezimalen Doppelpunkt, der eigentlichen Payload mit beliebigen Bytes und einem Ascii-Komma als Prüf-Anhang). Im Parameterblock werden Paare aus Name und Wert, jeweils mit <00>-Nullbyte getrennt, gesendet die den Umgebungsvariablen des CGI-Protokolls entsprechen. In der Parameterliste sollte ein Parameter SCGI mit Wert 1 auftreten und es muss ein Parameter CONTENT_LENGTH auftreten, der die Länge der Daten nach dem Parameterblock beschreibt.
Nach Dekodieren des Request sendet die SCGI-Applikation auf der geöffneten Verbindung die Antwort, die wie bei CGI üblich mit dem Status-Feld beginnt. Nach Versenden der CGI-Antwort wird die Verbindung von der SCGI-Applikation beendet.
Da eine SCGI-Verbindung mit einem ASCII '1' bis '9' Byte beginnt, kann ein SCGI-kodierter Request von einem HTTP-Forward unterschieden werden - eine laufende CGI Applikation kann so leicht in die Lage versetzt werden, gleichermaßen SCGI Requests und HTTP GET/POST Requests zu behandeln.
Webserver Unterstützung
Folgende Webserver unterstützen das SCGI-Protokoll
- Apache HTTP Server
- Lighttpd
- Cherokee HTTP Server
- Nginx Server
Sprachanbindung
Folgende Programmiersprachen unterstützen die Erstellung von SCGI-Applikationen.
Weblinks
Wikimedia Foundation.