stringtranslate.com

CGI rápido

FastCGI es un protocolo binario para interconectar programas interactivos con un servidor web . Es una variación del anterior Common Gateway Interface (CGI). El objetivo principal de FastCGI es reducir la sobrecarga relacionada con la interconexión entre el servidor web y los programas CGI, lo que permite que un servidor gestione más solicitudes de páginas web por unidad de tiempo.

Historia

Common Gateway Interface (CGI) es un protocolo para interconectar aplicaciones externas con servidores web. Las aplicaciones CGI se ejecutan en procesos separados , que se crean al comienzo de cada solicitud y se eliminan al final. Este modelo de "un nuevo proceso por solicitud" hace que los programas CGI sean muy fáciles de implementar, pero limita la eficiencia y la escalabilidad. Con cargas elevadas, la sobrecarga del sistema operativo para la creación y destrucción de procesos se vuelve significativa. Además, el modelo de proceso CGI limita los métodos de reutilización de recursos, como la reutilización de conexiones de bases de datos, el almacenamiento en caché en memoria, etc.

Para abordar las deficiencias de escalabilidad de CGI, Open Market desarrolló FastCGI y lo introdujo por primera vez en su producto de servidor web a mediados de los años 1990. Open Market desarrolló originalmente FastCGI en parte como una respuesta competitiva a las interfaces de programación de aplicaciones (API) en proceso patentadas de Netscape ( Netscape Server Application Programming Interface (NSAPI)) para desarrollar aplicaciones web.

Aunque Open Market fue el primero en desarrollar FastCGI, varios otros fabricantes de servidores web lo implementaron. Sin embargo, su enfoque compitió con otros métodos para acelerar y simplificar la comunicación entre servidores y subprogramas. Los módulos de Apache HTTP Server , como mod_perl y mod_php, aparecieron casi al mismo tiempo y ganaron popularidad rápidamente. A partir de 2020 , todos estos métodos, incluido CGI, siguen siendo de uso común.

Detalles de implementación

En lugar de crear un nuevo proceso para cada solicitud, FastCGI utiliza procesos persistentes para gestionar una serie de solicitudes. Estos procesos son propiedad del servidor FastCGI, no del servidor web. [1]

Para atender una solicitud entrante, el servidor web envía información de la variable de entorno y la solicitud de página a un proceso FastCGI a través de un socket de dominio Unix , una tubería con nombre o una conexión de Protocolo de control de transmisión (TCP). Las respuestas se devuelven desde el proceso al servidor web a través de la misma conexión y, a continuación, el servidor web envía esa respuesta al usuario final . La conexión puede cerrarse al final de una respuesta, pero tanto el servidor web como los procesos de servicio FastCGI persisten. [2]

Cada proceso FastCGI individual puede gestionar muchas solicitudes durante su vida útil, lo que evita la sobrecarga que supone la creación y finalización de procesos por solicitud. El procesamiento simultáneo de varias solicitudes se puede realizar de varias formas: mediante una conexión con multiplexación interna (es decir, varias solicitudes en una conexión); mediante varias conexiones; o mediante una combinación de estos métodos. Se pueden configurar varios servidores FastCGI, lo que aumenta la estabilidad y la escalabilidad.

Los administradores y programadores de sitios web pueden descubrir que separar las aplicaciones web del servidor web en FastCGI tiene muchas ventajas sobre los intérpretes integrados ( mod_perl , mod_php , etc.). Esta separación permite reiniciar los procesos del servidor y de la aplicación de forma independiente, una consideración importante para sitios web con mucho tráfico. También permite la implementación de políticas de seguridad de servicios de alojamiento por aplicación, lo que es un requisito importante para los ISP y las empresas de alojamiento web. [3] Se pueden distribuir diferentes tipos de solicitudes entrantes a servidores FastCGI específicos que han sido equipados para manejar esos tipos de solicitudes de manera eficiente.

Servidores web que implementan FastCGI

Nota: a menos que se indique lo contrario, se desconoce la integridad de la implementación de FastCGI

Enlaces de lenguaje para su API

FastCGI se puede implementar en cualquier lenguaje que admita conectores de red . Dado que "FastCGI es un protocolo, no una implementación", no está estrechamente vinculado a ningún lenguaje. Existen interfaces de programación de aplicaciones (API) para: [18]

Los marcos recientes como Ruby on Rails , Catalyst , Django , Kepler y Plack permiten el uso con intérpretes integrados ( mod_ruby , mod_perl , mod_python o mod_lua, por ejemplo) o FastCGI.

Referencias

  1. ^ "Especificación FastCGI". Open Market, Inc. 1996. Archivado desde el original el 19 de enero de 2016.
  2. ^ "FastCGI: una interfaz de servidor web de alto rendimiento". Open Market, Inc. 1996. Archivado desde el original el 1 de octubre de 2010.
  3. ^ Heinlein, Paul (1 de noviembre de 1998). "FastCGI: aplicaciones persistentes para su servidor web". Linux Journal . Consultado el 4 de octubre de 2010 .
  4. ^ Módulo Apache FastCGI mod_fcgid
  5. ^ Error de Debian n.° 450748: agregue soporte para servidores FastCGI TCP/IP
  6. ^ Problemas con Apache 2.4 y PHP-FPM
  7. ^ libapache-mod-fastcgi en Github
  8. ^ "FastCGI – El tesoro olvidado/ Sección 2.3". Archivado desde el original el 8 de febrero de 2010. Consultado el 21 de febrero de 2006 .
  9. ^ El transporte fastcgi — reverse_proxy (directiva Caddyfile) — Documentación de Caddy
  10. ^ FastCGI para Cherokee
  11. ^ Cómo hacer FastCGI para Hiawatha
  12. ^ ab "Compatibilidad con FastCGI en Jetty". Archivado desde el original el 24 de marzo de 2020. Consultado el 23 de marzo de 2017 .
  13. ^ FastCGI para Lighttpd
  14. ^ "Extensión FastCGI para IIS6.0 – RTM". FastCGI para IIS . Microsoft. 28 de febrero de 2008 . Consultado el 29 de febrero de 2008 .
  15. ^ "Módulo FastCGI Nginx ngx_http_fastcgi_module". nginx.org . NGINX, Inc . Consultado el 20 de junio de 2021 .
  16. ^ Confirmación inicial de httpd(8) de OpenBSD
  17. ^ "Ficha técnica". Archivado desde el original el 21 de enero de 2018. Consultado el 19 de septiembre de 2016 .
  18. ^ Bibliotecas de aplicaciones, kits de desarrollo
  19. ^ "Matreshka". Archivado desde el original el 20 de enero de 2018. Consultado el 6 de octubre de 2011 .
  20. ^ ExtPascal
  21. ^ Cómo utilizar FastCGI desde Common Lisp
  22. ^ Voy a ir a Eiffel
  23. ^ jFastCGI, un servlet Java que implementa el protocolo FastCGI
  24. ^ paquete npm node-fastcgi
  25. ^ Hay varios módulos FastCGI para Perl: FCGI (un módulo compilado escrito en C), FCGI::Async (para aplicaciones FastCGI asincrónicas), AnyEvent::FCGI (para aplicaciones basadas en AnyEvent), FCGI::EV (para aplicaciones basadas en EV), CGI::Fast (interfaz similar a CGI de Perl para FastCGI), FCGI::Client (una biblioteca cliente FastCGI) y Net::FastCGI (constantes y funciones para construir y analizar mensajes FastCGI).
  26. ^ "PHP: Administrador de procesos FastCGI (FPM) - Manual".
  27. ^ FasterCGI con HHVM
  28. ^ Existen varias cajas de Rust: una implementación de escucha es fastcgi, y fastcgi-client es una implementación de cliente.
  29. ^ REAL Studio Web Edition, crea aplicaciones web llamadas a través de FastCGI Archivado el 8 de febrero de 2011 en Wayback Machine

Enlaces externos