Servidor Apache HTTP
El Servidor HTTP Apache (ə-PATCH-ee) es un software de servidor web multiplataforma gratuito y de código abierto, publicado bajo los términos de la Licencia Apache 2.0. Apache es desarrollado y mantenido por una comunidad abierta de desarrolladores bajo los auspicios de Apache Software Foundation.
La gran mayoría de las instancias del servidor Apache HTTP se ejecutan en una distribución de Linux, pero las versiones actuales también se ejecutan en Microsoft Windows, OpenVMS y una amplia variedad de sistemas similares a Unix. Las versiones anteriores también se ejecutaban en NetWare, OS/2 y otros sistemas operativos, incluidos los puertos para mainframes.
Originalmente basado en el servidor NCSA HTTPd, el desarrollo de Apache comenzó a principios de 1995 después de que se paralizara el trabajo en el código NCSA. Apache desempeñó un papel clave en el crecimiento inicial de la World Wide Web, superando rápidamente a NCSA HTTPd como el servidor HTTP dominante. En 2009, se convirtió en el primer software de servidor web en servir a más de 100 millones de sitios web.
En marzo de 2022, Netcraft estimó que Apache sirvió el 23,04 % de los millones de sitios web más concurridos, mientras que Nginx sirvió 22,01%. Cloudflare con un 19,53 % y Microsoft Internet Information Services con un 5,78 % completaron los cuatro primeros. Para algunas de las otras estadísticas de Netcraft, Nginx está por delante de Apache. Según la revisión de W3Techs de todos los sitios web en junio de 2022, Apache ocupó el segundo lugar con un 31,4 % y Nginx primero con un 33,6 %, con Cloudflare Server tercero con un 21,6 %.
Nombre
Según The Apache Software Foundation, su nombre se eligió "por respeto a las diversas naciones nativas americanas denominadas colectivamente Apache, conocidas por sus habilidades superiores en la estrategia de guerra y su resistencia inagotable". Esto fue en un contexto en el que parecía que la Internet abierta, basada en el libre intercambio de código fuente abierto, pronto parecía estar sujeta a una especie de conquista por parte del proveedor de software propietario Microsoft; El co-creador de Apache, Brian Behlendorf, creador del nombre, vio su esfuerzo de alguna manera paralelo al de Gerónimo, jefe del último de los pueblos libres de Apache. Pero admitió que el nombre "también hace un lindo juego de palabras con 'un servidor web parcheado', un servidor creado a partir de una serie de parches".
Hay otras fuentes para el "parcheo" teoría del juego de palabras del software, incluida la documentación oficial del proyecto en 1995, que decía: "Apache es un nombre lindo que se quedó. Se basaba en un código existente y una serie de parches de software, un juego de palabras con 'A PATCHy' servidor."
Pero en una entrevista de abril de 2000, Behlendorf afirmó que los orígenes de Apache no eran un juego de palabras, afirmando:
El nombre literalmente salió del azul. Ojalá pudiera decir que era algo fantástico, pero estaba fuera de lo azul. Lo puse en una página y luego unos meses después, cuando comenzó este proyecto, señalé a la gente a esta página y le dije: "¿Qué piensas de esa idea?"... Alguien dijo que les gustaba el nombre y que era un buen juego. Y yo decía: "¿Un juego de palabras? ¿Qué quieres decir?" Dijo: "Bueno, estamos construyendo un servidor de un montón de parches de software, ¿verdad? Así que es un servidor Web parche." Yo fui, "Oh, bien."... Cuando pensé en el nombre, no. Simplemente connotó: "No tomes prisioneros. Sé agresivo y patea un trasero."
Cuando Apache se ejecuta bajo Unix, su nombre de proceso es httpd
, que es la abreviatura de "demonio HTTP".
Resumen de características
Apache admite una variedad de características, muchas implementadas como módulos compilados que amplían la funcionalidad principal. Estos pueden variar desde esquemas de autenticación hasta lenguajes de programación del lado del servidor como Perl, Python, Tcl y PHP. Los módulos de autenticación populares incluyen mod_access, mod_auth, mod_digest y mod_auth_digest, el sucesor de mod_digest. Una muestra de otras funciones incluye compatibilidad con Secure Sockets Layer y Transport Layer Security (mod_ssl), un módulo proxy (mod_proxy), un módulo de reescritura de URL (mod_rewrite), archivos de registro personalizados (mod_log_config) y compatibilidad con filtrado (mod_include y mod_ext_filter).
Los métodos de compresión populares en Apache incluyen el módulo de extensión externo, mod_gzip, implementado para ayudar a reducir el tamaño (peso) de las páginas web servidas a través de HTTP. ModSecurity es un motor de prevención y detección de intrusiones de código abierto para aplicaciones web. Los registros de Apache se pueden analizar a través de un navegador web utilizando scripts gratuitos, como AWStats/W3Perl o Visitantes.
El alojamiento virtual permite que una instalación de Apache sirva a muchos sitios web diferentes. Por ejemplo, una computadora con una instalación de Apache podría servir simultáneamente example.com
, example.org
, test47.test-server.example.edu
, etc.
Apache presenta mensajes de error configurables, bases de datos de autenticación basadas en DBMS, negociación de contenido y admite varias interfaces gráficas de usuario (GUI).
Soporta autenticación de contraseña y autenticación de certificado digital. Debido a que el código fuente está disponible gratuitamente, cualquiera puede adaptar el servidor para necesidades específicas y hay una gran biblioteca pública de complementos de Apache.
A continuación se proporciona una lista más detallada de funciones:
- Módulos dinámicos Loadable
- Múltiples modos de procesamiento de solicitudes (MMP) incluyendo Event-based/Async, Threaded y Prefork.
- Altamente escalable (acciona con facilidad más de 10.000 conexiones simultáneas)
- Manejo de archivos estáticos, archivos índice, auto-indicación y negociación de contenidos
- .htaccess soporte de configuración
- Proxy inverso con caché
- Equilibrio de carga con cheques de salud en banda
- Múltiples mecanismos de equilibrio de carga
- Tolerancia por defecto y Failover con recuperación automática
- WebSocket, FastCGI, SCGI, AJP y UWSGI con soporte de caché
- Configuración dinámica
- TLS/SSL con soporte de grapado SNI y OCSP, a través de OpenSSL o wolfSSL.
- Servidores virtuales basados en nombres y direcciones IP
- IPv6-compatible
- Apoyo HTTP/2
- Control de autenticación y autorización fino
- compresión gzip y descompresión
- URL reescribir
- Headers and content rewrite
- Registro personalizado con rotación
- Limitación de la conexión simultánea
- Limitación de la tasa de tramitación de solicitudes
- Golpe de ancho de banda
- Server Side Incluye:
- Geolocalización basada en la dirección IP
- Seguimiento de usuario y sesión
- WebDAV
- Embedded Perl, PHP y Lua scripting
- Apoyo CGI
public_html
páginas web por usuario- Parser de expresión genérica
- Vistas sobre el estado en tiempo real
- Soporte FTP (por un módulo separado)
Rendimiento
En lugar de implementar una sola arquitectura, Apache proporciona una variedad de módulos de procesamiento múltiple (MPM), que le permiten ejecutarse en un modo basado en procesos, un modo híbrido (proceso y subproceso) o un modo híbrido de eventos. para adaptarse mejor a las demandas de cada infraestructura en particular. Por lo tanto, la elección del MPM y la configuración es importante. Cuando se deben hacer compromisos en el rendimiento, Apache está diseñado para reducir la latencia y aumentar el rendimiento en relación con el simple manejo de más solicitudes, lo que garantiza un procesamiento consistente y confiable de las solicitudes dentro de plazos razonables.
Para entregar páginas estáticas, la serie Apache 2.2 se consideró significativamente más lenta que nginx y Varnish. Para solucionar este problema, los desarrolladores de Apache crearon Event MPM, que combina el uso de varios procesos y varios subprocesos por proceso en un bucle asíncrono basado en eventos. Esta arquitectura implementada en la serie Apache 2.4 funciona al menos tan bien como los servidores web basados en eventos, según Jim Jagielski y otras fuentes independientes. Sin embargo, algunos puntos de referencia independientes pero significativamente obsoletos muestran que todavía es la mitad de rápido que nginx, p.
Licencias
El código base del servidor Apache HTTP se volvió a licenciar a la licencia Apache 2.0 (de la licencia 1.1 anterior) en enero de 2004, y el servidor Apache HTTP 1.3.31 y 2.0.49 fueron las primeras versiones que utilizaron la nueva licencia.
Al proyecto OpenBSD no le gustó el cambio y continuó usando las versiones de Apache anteriores a la 2.0, bifurcando efectivamente Apache 1.3.x para sus propósitos. Inicialmente lo reemplazaron con Nginx, y poco después hicieron su propio reemplazo, OpenBSD Httpd, basado en el proyecto Relayd.
Versiones
Versión 1.1: La licencia Apache 1.1 fue aprobada por la ASF en 2000: el cambio principal con respecto a la licencia 1.0 se encuentra en la 'cláusula publicitaria' (sección 3 de la licencia 1.0); los productos derivados ya no están obligados a incluir la atribución en sus materiales publicitarios, solo en su documentación.
Versión 2.0: La ASF adoptó la Licencia Apache 2.0 en enero de 2004. Los objetivos declarados de la licencia incluían facilitar el uso de la licencia para proyectos que no son de la ASF, mejorar la compatibilidad con el software basado en GPL, permitir que la licencia se incluyera por referencia en lugar de enumerarse en cada archivo, aclarando la licencia sobre las contribuciones y exigiendo una licencia de patente sobre las contribuciones que necesariamente infringen las patentes propias de un contribuyente.
Desarrollo
Versión | Liberación inicial | Última publicación |
---|---|---|
1.3 | 1998-06-06 | 2010-02-03 (1.3.42) |
2.0 | 2002-04-06 | 2013-07-10 (2.0.65) |
2.2 | 2005-12-01 | 2017-07-11 (2.2.34) |
2.4 | 2012-02-21 | 2022-06-08 (2.4.54) |
Versión antigua Última versión |
El proyecto Apache HTTP Server es un esfuerzo de desarrollo de software colaborativo destinado a crear una implementación de código fuente robusta, de grado comercial, rica en funciones y disponible gratuitamente de un servidor HTTP (Web). El proyecto está gestionado conjuntamente por un grupo de voluntarios ubicados en todo el mundo, que utilizan Internet y la Web para comunicar, planificar y desarrollar el servidor y su documentación relacionada. Este proyecto es parte de Apache Software Foundation. Además, cientos de usuarios han contribuido con ideas, código y documentación al proyecto.
Apache 2.4 eliminó la compatibilidad con las plataformas BeOS, TPF, A/UX, NeXT y Tandem.
Seguridad
Apache, como otro software de servidor, puede ser pirateado y explotado. La principal herramienta de ataque de Apache es Slowloris, que explota un error en el software de Apache. Crea muchos sockets y los mantiene vivos y ocupados mediante el envío de varios bytes (conocidos como "encabezados de mantenimiento de actividad") para que el servidor sepa que la computadora aún está conectada y no experimenta problemas de red. Los desarrolladores de Apache se han dirigido a Slowloris con varios módulos para limitar el daño causado; los módulos de Apache mod_limitipconn, mod_qos, mod_evasive, mod security, mod_noloris y mod_antiloris se han sugerido como medios para reducir la probabilidad de un ataque exitoso de Slowloris. Desde Apache 2.2.15, Apache envía el módulo mod_reqtimeout como la solución oficial respaldada por los desarrolladores.
Contenido relacionado
HMAS Sídney
Cota de malla
Blizzard Entertainment