SCGI ( — Спрощений Загальний Інтерфейс Шлюзу) — стандарт зв'язку між вебсервером і програмою — генератором контенту. Стандарт є спрощеною версією стандарту 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 для майже будь-якої мови програмування, чому сприяє простота протоколу. Більшість мов мають бібліотеки.
Посилання Оригінальна специфікація