SCGI

Simple Common Gateway Interface (SCGI) — протокол по взаимодействию приложений с веб (http) серверами, разработанный как альтернатива Common Gateway Interface. Он похож на FastCGI, но проще в реализации.

Спецификация была опубликована Neil Schemenauer <[email protected]> 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 закрывает соединение.

Ссылки

  • FastCGI


Внешние ссылки

  • Спецификация SCGI Архивная копия от 8 мая 2007 на Wayback Machine
  • Спецификация netstrings Архивная копия от 23 июня 2008 на Wayback Machine
  • Модуль SCGI для Apache и интерфейс SCGI для Python Архивная копия от 26 февраля 2021 на Wayback Machine.
  • Модуль SCGI для Cherokee (недоступная ссылка).
  • Интерфейс SCGI для Perl Архивная копия от 29 сентября 2007 на Wayback Machine.
  • Модуль SCGI для Nginx.
  • Faster Web Applications with SCGI - статья о SCGI в Linux Journal Issue #158 June 2007
  • Lisp interface
Перейти к шаблону «Протоколы взаимодействия»
Шлюзовые
  • ASGI
  • CGI
  • FastCGI
  • JSGI
  • SCGI
  • PCGI
  • WSGI
  • PHP-FPM