SCGI

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

SCGI (англ. Simple Common Gateway Interface — Спрощений Загальний Інтерфейс Шлюзу) — стандарт зв'язку між вебсервером і програмою — генератором контенту. Стандарт є спрощеною версією стандарту FastCGI. На відміну від FastCGI, специфікація SCGI займає кілька сторінок.

Специфікація

[ред. | ред. код]

Спершу вебсервер встановлює зв'язок із програмою, генератором контенту, використовуючи надійний потоковий протокол, що підтримує передачу 8-бітних байтів. Заголовки поділені нульовими байтами. Першим заголовком обов'язково має бути заголовок «CONTENT_LENGTH»(англ. ДОВЖИНА_ЗМІСТУ), що означає довжину тіла запиту. Цей заголовок має бути присутнім навіть якщо його значення дорівнює нулю. Також обов'язковий заголовок «SCGI», значення якого має бути «1», для підтвердження того, що цей запит — SCGI запит. Позиція цього заголовка, на відміну від «CONTENT_LENGTH», не зазначається. Після заголовку йде тіло запиту, яке зазвичай є тілом НТТР запита, надісланого до вебсервера. Після отримання й обробки інформації, програма повинна відіслати відповідь, однак її структура не зазначається, але зазвичай вона є такою ж, як і в CGI та FastCGI. Коли відповідь повністю надіслано, програма має обірвати з'єднання.

Приклад

[ред. | ред. код]

SCGI клієнт під'єднується до SCGI сервера і надсилає запит:

       "70:"
           "CONTENT_LENGTH" <00> "27" <00>
           "SCGI" <00> "1" <00>
           "REQUEST_METHOD" <00> "POST" <00>
           "REQUEST_URI" <00> "/deepthought" <00>
       ","
       "У чому сенс життя?"

SCGI сервер обробляє отриману інформацію та відсилає відповідь:

       "Status: 200 OK" <0d 0a>
       "Content-Type: text/plain" <0d 0a>
       "" <0d 0a>
       "42"

SCGI сервер обриває з'єднання.

Вебсервери, що підтримують SCGI

[ред. | ред. код]

Протокол підтримується усіма провідними вебсерверами, зокрема:

  • Lighttpd — використовуючи mod_scgi, який є розширенням для підтримки FastCGI — mod_fcgi, зі зміненою частиною, що відповідає за протокол. Конфігуруються обидва розширення однаково. Це означає, що скоріше за все розподіл навантаження lighttpd для FastCGI працює також для SCGI.
  • nginx
  • Apache
  • Microsoft Internet Information Services — використовуючи ISAPI розширення.

Мови програмування, що підтримують SCGI

[ред. | ред. код]

Можливо зробити бібліотеку SCGI для майже будь-якої мови програмування, чому сприяє простота протоколу. Більшість мов мають бібліотеки.

Посилання

[ред. | ред. код]

Оригінальна специфікація [Архівовано 25 лютого 2021 у Wayback Machine.](англ.)