FastCGI

Интерфейс FastCGI — клиент-серверный протокол взаимодействия веб-сервера и приложения, дальнейшее развитие технологии CGI. По сравнению с CGI является более производительным и безопасным.

FastCGI снимает множество ограничений CGI-программ. Недостаток CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности. FastCGI, вместо того чтобы создавать новые процессы для каждого нового запроса, использует постоянно запущенные процессы для обработки множества запросов. Это позволяет экономить время.

В то время как CGI-программы взаимодействуют с сервером через STDIN и STDOUT запущенного CGI-процесса, FastCGI-процессы используют Unix Domain Sockets или TCP/IP для связи с сервером. Это даёт следующее преимущество над обычными CGI-программами: FastCGI-программы могут быть запущены не только на этом же сервере, но и где угодно в сети. Также возможна обработка запросов несколькими FastCGI-процессами, работающими параллельно.

lighttpd включает в себя внутренний распределитель нагрузки FastCGI, который может использоваться для распределения сразу на несколько FastCGI-серверов. В отличие от иных решений, в кластере должен находиться только FastCGI-процесс, а не целый веб-сервер. Это позволяет использовать FastCGI-процессу больше ресурсов, по сравнению, например, с load-balancer+apache+mod_php.

При сравнении php-FastCGI с apache+mod_php необходимо обращать внимание на то, что FastCGI обеспечивает дополнительную безопасность, такую как, например, запуск FastCGI-процесса под учётной записью пользователя, отличного от пользователя веб-сервера, а также может находиться в chroot'е, отличном от chroot'а веб-сервера.

При сравнении perl-FastCGI с apache+mod_perl(1,2), кроме вышеуказанного, заметно, что для разделяемого использования памяти между процессами, реализуемого в mod_perl через startup.pl, необходим FastCGI-менеджер процессов, реализованный на Perl. Это реализуется модулем FCGI::ProcManager и его надстройкой FCGI::Spawn.

Веб-серверы, поддерживающие FastCGI

  • Abyss Web Server
  • Apache HTTP-сервер (частично)
    • Используются сторонние модули mod_fastcgi или mod_fcgid
    • Мультиплексирование запросов через одно соединение невозможно в данной архитектуре веб-сервера Apache[1]
  • aXesW3
  • Cherokee HTTP Server
  • Hiawatha webserver
    • Поддержка изолированного FastCGI-сервера
  • Lighttpd
  • LiteSpeed Web Server
  • Microsoft IIS[2]
  • MyServer
  • nginx
    • Поддержка группы серверов
  • Open Market Web Server
  • Roxen webserver
  • Sun Java System Web Server (и предшественники)
  • WebSTAR
  • Yaws
  • Zeus
  • Kitura

Привязки FastCGI API в языках программирования

FastCGI может быть использован в любом языке, поддерживающем сокеты. Существующие API:

Примечания

  1. FastCGI — The Forgotten Treasure/ Section 2.3. (недоступная ссылка). Дата обращения: 16 января 2008. Архивировано 8 февраля 2010 года.
  2. FastCGI для IIS (technical preview 2)
  3. ExtPascal (недоступная ссылка). Дата обращения: 9 июля 2019. Архивировано 22 ноября 2008 года.

См. также

Источники

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.