Большинство веб-серверов полагаются на стандартизированный механизм для запуска динамического контента. Этот механизм называется 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 заложил этот паттерн. Он доказал, что серверы могут запускать внешние программы для генерации контента. Каждый динамический сайт, который вы посещаете сегодня, ведет свое происхождение от этой простой структуры директорий.
Граница между статическим и динамическим контентом определяется конфигурацией сервера. **






































