Інтерфейс 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 процесу під користувачем, відмінним від користувача web-сервера, а також може знаходитися в 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 AXesW3 Cherokee HTTP Server Hiawatha webserver Підтримка ізольованою FastCGI сервера Lighttpd LiteSpeed Web Server Microsoft IIS MyServer Nginx Підтримка групи серверів Open Market Web Server Roxen webserver Sun Java System Web Server (і попередники) WebSTAR Zeus

Прив'язки FastCGI API в мовах програмування FastCGI може бути використаний в будь-якій мові, що підтримує сокети. Існуючі API: C / C++ Chicken Scheme Common Lisp: CLISP and CMUCL D (мова програмування) Erlang Guile Scheme Goanna Eiffel Haskell HP BASIC for OpenVMS Java Lua Ocaml Mono XSP Perl PHP Roadsend PHP Python Ruby SmallEiffel Smalltalk: FasTalk and Dolphin Smalltalk TCL

Примітки

Див. також CGI SCGI PCGI

Джерела Сайт присвячений FastCGI Специфікація протоколу FastCGI Опис FastCGI модуля для сервера lighttpd Налаштування FastCGI модуля для сервера nginx