SCGI
Simple Common Gateway Interface (SCGI) — протокол по взаимодействию приложений с веб (http) серверами, разработанный как альтернатива Common Gateway Interface. Он похож на FastCGI, но проще в реализации.
Спецификация была опубликована Neil Schemenauer <nas@python.ca> 12 января 2006 года.
Спецификация
Клиент подключается к SCGI-серверу по протоколу передачи потоков, допускающем передачу 8-битных байтов. Клиент начинает с отправки запроса. Когда SCGI-сервер видит конец запроса, он посылает обратно ответ и закрывает соединение. Формат ответа не специфицирован протоколом.
Формат запроса
Запрос состоит из заголовков и тела. Формат заголовков:
headers ::= header* header ::= name NUL value NUL name ::= notnull+ value ::= notnull+ notnull ::= <01> | <02> | <03> | ... | <ff> NUL = <00>
Повторяющиеся имена не допускаются. Первый заголовок обязан иметь имя «CONTENT_LENGTH», а в его теле — непустой последовательности ASCII цифр — должна быть указана длина тела сообщения (в десятичном представлении). Заголовок «CONTENT_LENGTH» всегда должен передаваться, даже если его значение 0. Также всегда должен передаваться заголовок «SCGI» и значением 1. Для облегчения перехода с CGI, переменные окружения CGI должны передаваться как заголовки SCGI.
Заголовки пересылаются закодированные как сетевые строки (англ. netstrings). Тело пересылается за заголовками и его длина должна определяться заголовком «CONTENT_LENGTH».
Пример
Веб-сервер (клиент SCGI) открывает соединение и посылает следующие строки
"70:" "CONTENT_LENGTH" <00> "27" <00> "SCGI" <00> "1" <00> "REQUEST_METHOD" <00> "POST" <00> "REQUEST_URI" <00> "/deepthought" <00> "," "What is the answer to life?"
SCGI сервер посылает следующий ответ:
"Status: 200 OK" <0d 0a> "Content-Type: text/plain" <0d 0a> "" <0d 0a> "42"
Затем сервер SCGI закрывает соединение.
Внешние ссылки
- Спецификация SCGI
- Спецификация netstrings
- Модуль SCGI для Apache и интерфейс SCGI для Python.
- Модуль SCGI для Cherokee (недоступная ссылка).
- Интерфейс SCGI для Perl.
- Модуль SCGI для Nginx.
- Faster Web Applications with SCGI - статья о SCGI в Linux Journal Issue #158 June 2007
- Lisp interface