CGI- Common Gateway Interface является стандартом интерфейса (связи) внешней прикладной программы с информационным сервером типа HTTP, Web сервер.
Обычно гипертекстовые документы, извлекаемые из WWW серверов, содержат статические данные. С помощью CGI можно создавать CGI-программы, называемые шлюзами, которые во взаимодействии с такими прикладными системами, как система управления базой данных, электронная таблица, графика и др., смогут выдать на экран пользователя динамическую информацию.
Программа-шлюз запускается WWW сервером в реальном масштабе времени. WWW сервер обеспечивает передачу запроса пользователя шлюзу, а она в свою очередь, используя средства прикладной системы, возвращает результат обработки запроса на экран пользователя. Программа-шлюз может быть создана на языках C/C++, Fortran, Perl, TCL, Unix Shell, Visual Basic, Apple Script, РНР. Как выполнимый модуль, она записывается в поддиректории с именем cgi-bin WWW сервера.
Функциональные возможности CGI обеспечиваются модулем mod_cgi и активизируются следующим образом:
· с помощью ScriptAlias – помечает каталог как содержащий исполняемые сценарии;
· с помощью указания параметра ExecCGI в директиве Options.
Установка каталога CGI с помощью ScriptAlias. Этот режим удобен на сайте, где пользователям разрешено обновлять свои собственные веб-страницы. Пользователи могут выполнять CGI-сценарии, но не могут создавать собственные, так как Apache не будет распознавать их как CGI.
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
В результате Apache интерпретирует любой входящий URL типа http://www.domain.com как запрос на выполнение сценариев CGI.
Повышение уровня безопасности каталогов для ScriptAlias. Применяется контейнер <Directory>, предотвращающий использование файлов.htaccess, которые могут ослабить защиту сервера.
<Directory /usr/local/apache/cgi-bin/>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Установка каталога CGI с помощью ExecCGI.
Alias /cgi-bin/ "/usr/local/apache/cgi-bin/"
<Directory /usr/local/apache/cgi-bin/>
AllowOverride None
Options ExecCGI
SetHandler cgi-script
</Directory>
Описание сценариев CGI по расширению. Директива SetHandler внутри <Directory> вызывает обработчик для любого файла в указанном каталоге. Директива AddHandler позволяет указать одно или несколько расширений файлов, которые будут считаться сценариями CGI.
AddHandler cgi-script.cgi.pl.pm.exe.bat
Для выполнения данной директивы необходимо указать еще и ExecCGI. Единственная директива, разрешающая CGI без указания ExecCGI – ScriptAlias.
Описание сценариев CGI по типу среды. Директива AddType позволяет связывать расширения файлов с MIME-типами:
AddType application/x-http-cgi.cgi