Servidor HTTP Apache
Desarrollado por | Fundación de software Apache |
---|---|
Primera versión | 1995 |
Última versión | 2.4.46 (5 de agosto de 2020) |
Versión avanzada | 2.5.0-alfa (8 de noviembre de 2017) |
Depositar | svn.apache.org/repos/asf/httpd/httpd |
Escrito en | VS |
Sistema de explotación | Multiplataforma |
Idiomas | inglés |
Tipo | Servidor web |
Licencia | Licencia de Apache versión 2.0 |
Sitio web | httpd.apache.org |
El software gratuito Apache HTTP Server ( Apache ) es un servidor HTTP creado y mantenido dentro de Apache Foundation . Hasta abril de 2019, fue el servidor HTTP más popular en la World Wide Web . Se distribuye bajo los términos de la licencia de Apache .
Apache apareció en Abril de 1995. Al principio, se trataba de una colección de correcciones y adiciones al servidor NCSA HTTPd 1.2, que era de dominio público y era el servidor HTTP más popular en ese momento. De este origen, muchas personas afirman que el nombre Apache proviene de un servidor con parches , o "un servidor con parches". Posteriormente, Apache se reescribió por completo, por lo que en la versión 2 no hay rastro de NCSA HTTPd.
Inicialmente, Apache era la única alternativa seria y gratuita al servidor HTTP de Netscape ( iPlanet , ahora Sun ONE ). DesdeAbril de 1996, según el estudio en curso de Netcraft , Apache se ha convertido en el servidor HTTP más popular de Internet .
Cuota de mercado de Apache:
Apache versión 2 tiene varios avances importantes sobre la versión 1, incluido el soporte para múltiples plataformas ( Windows , Linux y UNIX , entre otras), soporte para procesos ligeros UNIX , una nueva API y soporte IPv6 .
La Fundación Apache ( Apache Software Foundation o ASF ) se creó en 1999 a partir del grupo Apache ( Apache Group ) que creó el servidor en 1995 . Desde entonces, se han desarrollado muchos otros software útiles para la World Wide Web junto con el servidor HTTP.
Apache funciona principalmente en sistemas operativos UNIX ( Linux , Mac OS X , Solaris , BSD y UNIX ) y Windows . La versión de Windows solo se considera estable desde la versión 1.2 de Apache. Apache es utilizado por muchos productos, incluido WebSphere de IBM , así como Oracle Corporation .
Apache está diseñado para soportar muchos módulos dándole funcionalidad adicional: interpretación de Perl , PHP , Python y Ruby , servidor proxy , Interfaz de puerta de enlace común , Incluye del lado del servidor , reescritura de URL , negociación de contenido, protocolos de comunicación adicionales, etc. Sin embargo, cabe señalar que la existencia de muchos módulos de Apache complica la configuración del servidor web. De hecho, las mejores prácticas recomiendan cargar solo módulos útiles: regularmente se descubren muchas vulnerabilidades de seguridad que afectan solo a los módulos de Apache.
Las posibilidades de configuración de Apache son una característica emblemática. El principio se basa en una jerarquía de archivos de configuración, que se pueden administrar de forma independiente. Esta función es particularmente útil para los hosts que pueden atender los sitios de varios clientes utilizando un solo servidor HTTP . Para los clientes, esta funcionalidad se hace visible mediante el archivo .htaccess .
Entre las herramientas que ayudan al mantenimiento de Apache, los archivos de registro se pueden analizar utilizando muchos scripts y software gratuito como AWStats , Webalizer o W3Perl . Varias interfaces gráficas facilitan la configuración del servidor.
Estos dos modos de funcionamiento principales cambian notablemente el rendimiento del servidor HTTP.
Históricamente, Apache funciona en prefork , lo que significa que un proceso principal iniciado con derechos extendidos ( raíz ) inicia procesos secundarios, cada uno de los cuales manejará un cierto número de solicitudes de clientes. Sin embargo, en Linux, la multiplicación de procesos provoca un aumento en el consumo de recursos (memoria, descriptores de archivos).
En el modo de trabajo , Apache inicia subprocesos que manejarán las solicitudes entrantes. La diferencia es que este es un modo más preventivo en el que el proceso padre prepara los recursos para sus subprocesos. Es posible que los módulos desarrollados por terceros o las bibliotecas utilizadas por estos módulos no estén diseñados para funcionar en un entorno de subprocesos múltiples; en este caso, podrían ser una fuente de mal funcionamiento si se utilizan con el modo trabajador .
Desde la versión 2.4, el módulo de eventos está disponible en producción. Esto se deriva del modo trabajador , excepto que los subprocesos no solo dan servicio a una conexión de cliente, sino que pueden realizar múltiples tareas independientemente de la conexión. Por lo tanto, las nociones de KeepAlivese manejan mejor en el sentido de que un hilo ya no espera a que se termine la conexión para servir a otro. Más claramente, el hilo atiende una solicitud y no una conexión.
Módulos: prefork.c, worker.c, event.c
A través de mod_proxy, entre otros, es posible utilizar Httpd Server como un Proxy real .
Uno de los usos más interesantes es el balanceo de carga , ya sea en el contexto de alta disponibilidad, o para obtener un mejor rendimiento. Las habilidades de Reverse Proxying están lo suficientemente desarrolladas para un lanzamiento sin problemas a la producción a partir de la versión 2.1.
Módulos: mod_proxy, mod_proxy_balancer, mod_proxy_http, mod_proxy_ajp, mod_proxy_connect