Як CGI-скрипти виконуються на веб-серверах: пояснення cgi-bin

1

Більшість веб-серверів покладаються на стандартизований механізм запуску динамічного контенту. Цей механізм називається Common Gateway Interface (CGI). Не магія. Це структура папок та набір правил, які говорять серверу перестати ставитися до коду як до статичного тексту і почати сприймати його як програму, що виконується.

Ключовим елементом є спеціальна піддиректорія з ім’ям cgi-bin. Під час налаштування веб-сервера ви створюєте цю папку всередині кореневої директорії документів. Сервер налаштовується на ретельний моніторинг цієї директорії. Будь-який файл, запрошений з cgi-bin, викликає іншу поведінку, ніж стандартна HTML-сторінка.

Замість того, щоб прочитати файл і надіслати його сирий вміст вашому браузеру, сервер виконує цей файл. Саме висновок, згенерований у результаті виконання, доставляється клієнту. Це дозволяє серверу запускати код на льоту, формуючи відповіді на основі введення користувача, запитів до бази даних або іншої динамічної логіки.

Програми, що зберігаються в цій директорії, зазвичай є або скомпіловані бінарні файли (наприклад, створені компілятором C), або скрипти, що інтерпретуються. У цій галузі домінує одна мова: PERL. Він є основою CGI-скриптингу вже кілька десятиліть, оскільки обробляє роботу з текстом та взаємодію із сервером з разючою легкістю.

Розглянемо конкретний приклад. Ви вводите цю URL-адресу у свій браузер: https://www.howstuffworks.com/cgi-bin/search.pl.

Сервер бачить шлях. Він розпізнає, що search.pl знаходиться всередині папки cgi-bin. Він не надсилає вам вихідний код. Він запускає search.pl. Скрипт на PERL обробляє запит, можливо, звертаючись до пошукового індексу, і повертає результат у форматі HTML. Ваш браузер відображає цей результат. Вихідний код ніколи не потрапляє на екран.

Бажаєте спробувати це самі? Це можливо, але вам знадобляться дві речі.

По-перше, вам потрібно знати мову програмування, що підходить для CGI. Традиційними стандартами є C та PERL. Вам необхідно розуміти, як виводити HTTP-заголовки та обробляти вхідні дані сервера.

По-друге, вам потрібен доступ до веб-сервера, який підтримує виконання CGI. Якщо ви використовуєте платний хостинг-провайдер, у вас, швидше за все, є ця можливість. Більшість планів загального хостингу за промовчанням підтримують CGI. Перевірте документацію вашого хостинг-провайдера, щоб підтвердити це. Можливо, вам потрібно завантажити свої скрипти саме в директорію cgi-bin.

Якщо у вас немає облікового запису на хостингу, ви можете встановити веб-сервер на своєму домашньому комп’ютері. Це дасть вам повний контроль. Ви зможете експериментувати з різними конфігураціями та налагоджувати помилки в режимі реального часу. Це складніше, ніж використання хостингового сервісу. Вам доведеться самостійно керувати програмним забезпеченням сервера, безпекою та правами доступу. Але крива навчання тут крута, але корисна. Ви зрозумієте, як працює веб зсередини.

Це налаштування працює, тому що серверу явно вказано довіряти та виконувати код у цій конкретній папці. Поза cgi-bin сервер обробляє файли як статичні дані. Усередині є програмами. Саме ця відмінність уможливлює динамічні веб-додатки.

Сервер виконує програму та надсилає виведення у браузер. Вихідний код залишається прихованим.

Чи це найсучасніший спосіб створення веб-додатків? Ні. Сучасні фреймворки часто використовують інші архітектури. Але CGI заклав цей патерн. Він довів, що сервери можуть запускати зовнішні програми для створення контенту. Кожен динамічний сайт, який ви відвідуєте сьогодні, походить від цієї простої структури директорій.

Кордон між статичним та динамічним контентом визначається конфігурацією сервера. **