Software de servidor web de código abierto
El servidor HTTP Apache ( ə- ee es un software de servidor web gratuito y de código abierto , publicado bajo los términos de la Licencia Apache 2.0 . Es desarrollado y mantenido por una comunidad de desarrolladores bajo auspicios de la Apache Software Foundation .
La gran mayoría de las instancias de Apache HTTP Server se ejecutan en una distribución Linux , [5] pero las versiones actuales también se ejecutan en Microsoft Windows , [6] OpenVMS , [7] y una amplia variedad de sistemas similares a Unix . Las versiones anteriores también se ejecutaban en NetWare , OS/2 y otros sistemas operativos, [8] incluyendo puertos para mainframes. [9]
Apache, que originalmente se basaba en el servidor HTTPd de NCSA , comenzó a desarrollarse a principios de 1995 después de que el trabajo en el código de NCSA se estancara. [10] Apache jugó un papel clave en el crecimiento inicial de la World Wide Web , [11] superando rápidamente a NCSA HTTPd como el servidor HTTP dominante . En 2009, se convirtió en el primer software de servidor web en dar servicio a más de 100 millones de sitios web . [12]
En marzo de 2022 [update], Netcraft estimó que Apache servía al 23,04% del millón de sitios web más activos, mientras que Nginx servía al 22,01%; Cloudflare con el 19,53% y Microsoft Internet Information Services con el 5,78% completaban los cuatro primeros puestos. En otras estadísticas de Netcraft, Nginx está por delante de Apache. [13] Según la revisión de todos los sitios web de W3Techs, en junio de 2022 Apache ocupaba el segundo lugar con el 31,4% y Nginx el primero con el 33,6%, con Cloudflare Server en tercer lugar con el 21,6%. [14]
Nombre
Según la Apache Software Foundation , su nombre fue elegido "por respeto a las diversas naciones nativas americanas conocidas colectivamente como Apache , conocidas por sus habilidades superiores en estrategia de guerra y su resistencia inagotable". [15] 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 estaría sujeta a una especie de conquista por parte del proveedor de software propietario Microsoft ; el cocreador de Apache, Brian Behlendorf , originador del nombre, vio su esfuerzo algo paralelo al de Geronimo , jefe del último de los pueblos apaches libres. [16] [17] Pero admitió que el nombre "también hace un lindo juego de palabras con 'un servidor web irregular ', un servidor hecho de una serie de parches ".
Existen otras fuentes que respaldan la teoría del juego de palabras sobre el software "irregular", incluida la documentación oficial del proyecto en 1995, que afirmaba: "Apache es un nombre simpático que se mantuvo. Se basaba en un código existente y una serie de parches de software, un juego de palabras con el servidor 'A PAtCHy'". [18] [19]
Pero en una entrevista de abril de 2000, Behlendorf afirmó que los orígenes de Apache no eran un juego de palabras, afirmando: [20]
El nombre surgió literalmente de la nada. Me gustaría poder decir que era algo fantástico, pero fue algo inesperado. Lo puse en una página y unos meses después, cuando empezó este proyecto, le señalé a la gente esta página y les dije: "Oye, ¿qué te parece esa idea?"... Alguien dijo que le gustaba el nombre y que era un juego de palabras muy bueno. Y yo le dije: "¿Un juego de palabras? ¿Qué quieres decir?". Me dijo: "Bueno, estamos construyendo un servidor a partir de un montón de parches de software, ¿no? Así que es un servidor web con parches". Le dije: "Ah, está bien".... Cuando pensé en el nombre, no. Simplemente tenía una connotación: "No hagas prisioneros. Sé un poco agresivo y patea traseros".
En enero de 2023, la organización sin fines de lucro Natives in Tech, con sede en EE. UU., acusó a la Apache Software Foundation de apropiación cultural y la instó a cambiar el nombre de la fundación y, en consecuencia, también los nombres de los proyectos de software que alberga. [21] [22]
Cuando Apache se ejecuta en Unix , su nombre de proceso es httpd
, que es la abreviatura de "HTTP daemon ". [23]
Descripción general de las funciones
Apache admite una variedad de características, muchas de ellas implementadas como módulos compilados que extienden la funcionalidad principal. Estas pueden ir desde esquemas de autenticación hasta compatibilidad con 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 características 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 filtros (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 con la reducción del tamaño (peso) de las páginas web servidas a través de HTTP . ModSecurity es un motor de detección y prevenció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 Visitors.
El alojamiento virtual permite que una instalación de Apache brinde servicio a muchos sitios web diferentes . Por ejemplo, una computadora con una instalación de Apache podría brindar servicio simultáneamente a 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).
Admite autenticación mediante contraseña y certificado digital . Como el código fuente está disponible de forma gratuita, cualquiera puede adaptar el servidor a necesidades específicas y existe una gran biblioteca pública de complementos de Apache. [24]
A continuación se proporciona una lista más detallada de características:
- Módulos dinámicos cargables
- Múltiples modos de procesamiento de solicitudes (MPM), incluidos los basados en eventos/asincrónicos , subprocesados y prebifurcación.
- Altamente escalable (maneja fácilmente más de 10,000 conexiones simultáneas )
- Manejo de archivos estáticos, archivos de índice, indexación automática y negociación de contenido
- .htaccessSoporte de configuración por directorio [25]
- Proxy inverso con almacenamiento en caché [26]
- TLS/SSL con soporte de grapado SNI y OCSP , a través de OpenSSL o wolfSSL .
- Servidores virtuales basados en nombres y direcciones IP
- Compatible con IPv6
- Compatibilidad con HTTP/2
- Control de acceso mediante autenticación y autorización de grano fino [29]
- compresión y descompresión gzip
- Reescritura de URL [30]
- Encabezados [31] y contenido [32] [33] reescritura
- Registro personalizado con rotación
- Limitación de conexión concurrente
- Limitación de la tasa de procesamiento de solicitudes
- Limitación del ancho de banda
- El lado del servidor incluye [34]
- Geolocalización basada en dirección IP
- Seguimiento de usuarios y sesiones [35]
- WebDAV
- Scripts integrados en Perl , PHP y Lua
- Soporte CGI [36]
public_html
páginas web por usuario [37]- Analizador de expresiones genéricas [38]
- Vistas de estado en tiempo real [39]
- Soporte FTP (mediante un módulo independiente) [40]
Actuación
En lugar de implementar una única arquitectura, Apache ofrece una variedad de módulos de multiprocesamiento (MPM), que le permiten ejecutarse en un modo basado en procesos , en un modo híbrido (proceso y subproceso ) o en 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 concesiones 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. [ aclaración necesaria ]
Para entregar páginas estáticas, la serie Apache 2.2 se consideró significativamente más lenta que nginx y varnish . [41] Para abordar este problema, los desarrolladores de Apache crearon Event MPM, que mezcla el uso de varios procesos y varios subprocesos por proceso en un bucle asincrónico basado en eventos . [42] [ aclaración necesaria ] Esta arquitectura tal como se implementó 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. [43] [44] [45] Sin embargo, algunos puntos de referencia independientes pero significativamente obsoletos muestran que todavía es la mitad de rápido que nginx, por ejemplo [46]
Licencias
El código base de Apache HTTP Server fue renombrado a la Licencia Apache 2.0 (de la licencia anterior 1.1) en enero de 2004, [47] y Apache HTTP Server 1.3.31 y 2.0.49 fueron las primeras versiones que usaron la nueva licencia. [48]
Al proyecto OpenBSD no le gustó el cambio y continuó usando versiones de Apache anteriores a la 2.0, bifurcando efectivamente Apache 1.3.x para sus propósitos. [49] [50] [51] Inicialmente lo reemplazaron con Nginx , y poco después hicieron su propio reemplazo, OpenBSD Httpd, basado en el proyecto Relayd. [52] [53] [54] [55]
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 está en la "cláusula de publicidad" (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 hacer que la licencia fuera más fácil de usar para proyectos no pertenecientes a la ASF, mejorar la compatibilidad con software basado en GPL, permitir que la licencia se incluyera por referencia en lugar de aparecer en cada archivo, aclarar la licencia sobre las contribuciones y requerir una licencia de patente para las contribuciones que necesariamente infrinjan las patentes propias de un colaborador.
Desarrollo
El proyecto Apache HTTP Server es un esfuerzo de desarrollo de software colaborativo cuyo objetivo es crear una implementación de código fuente de un servidor HTTP (Web) robusta, de calidad comercial, rica en funciones y de libre acceso. El proyecto está gestionado de forma conjunta por un grupo de voluntarios ubicados en todo el mundo, que utilizan Internet y la Web para comunicarse, planificar y desarrollar el servidor y su documentación relacionada. Este proyecto forma parte de la Apache Software Foundation . Además, cientos de usuarios han contribuido con ideas, código y documentación al proyecto. [64] [65] [66]
Apache 2.4 abandonó el soporte para las plataformas BeOS , TPF , A/UX , NeXT y Tandem . [8]
Seguridad
Apache, al igual que otros programas de servidor, puede ser hackeado y explotado. La principal herramienta de ataque de Apache es Slowloris , que explota un error en el software Apache. [67] Crea muchos sockets y mantiene cada uno de ellos activo y ocupado enviando varios bytes (conocidos como "encabezados de mantenimiento de conexión") para que el servidor sepa que la computadora todavía está conectada y no experimenta problemas de red. Los desarrolladores de Apache han abordado Slowloris con varios módulos para limitar el daño causado; los módulos Apache mod_limitipconn, mod_qos , mod_evasive, mod security , mod_noloris y mod_antiloris han sido sugeridos como medios para reducir la probabilidad de un ataque exitoso de Slowloris. [68] [69] Desde Apache 2.2.15, Apache incluye el módulo mod_reqtimeout como la solución oficial compatible con los desarrolladores. [70]
Véase también
Referencias
- ^ "Acerca del proyecto Apache HTTP Server". Apache Software Foundation . Archivado desde el original el 7 de junio de 2008. Consultado el 25 de junio de 2008 .
- ^ "[ANUNCIO] Lanzamiento de Apache HTTP Server 2.4.62". 17 de julio de 2024 . Consultado el 17 de julio de 2024 .
- ^ "Índice Apache Software Foundation: índice de proyectos por lenguaje de programación". Archivado desde el original el 2 de marzo de 2016. Consultado el 27 de febrero de 2016 .
- ^ "Compilación e instalación". httpd.apache.org . The Apache Software Foundation. Archivado desde el original el 7 de mayo de 2016 . Consultado el 9 de mayo de 2016 .
- ^ "Distribuciones de SO/Linux que utilizan Apache". secure1.securityspace.com . Archivado desde el original el 2018-09-18 . Consultado el 2018-09-17 .
- ^ "Notas específicas de la plataforma: servidor HTTP Apache versión 2.4". httpd.apache.org . Archivado desde el original el 22 de enero de 2019 . Consultado el 21 de enero de 2019 .
- ^ "Servidor web seguro". vmssoftware.com . Archivado desde el original el 2020-10-22 . Consultado el 2020-10-20 .
- ^ ab "Actualización de 2.2 a 2.4". Archivado desde el original el 2021-05-10 . Consultado el 2021-05-12 .
Se ha eliminado la compatibilidad con plataformas como BeOS, TPF e incluso plataformas más antiguas como A/UX, Next y Tandem. Se creía que ya no funcionaban.
- ^ "El puerto EBCDIC de Apache: servidor HTTP Apache versión 2.4". httpd.apache.org . Archivado desde el original el 27 de febrero de 2019 . Consultado el 16 de agosto de 2019 .
- ^ "Acerca del proyecto Apache HTTP Server - El proyecto Apache HTTP Server". httpd.apache.org . Consultado el 8 de febrero de 2024 .
- ^ Cuota de mercado de Netcraft Archivado el 20 de mayo de 2010 en Wayback Machine para los mejores servidores en todos los dominios desde agosto de 1995 hasta hoy (actualizado mensualmente)
- ^ "Encuesta sobre servidores web de febrero de 2009". Netcraft . 18 de febrero de 2009. Archivado desde el original el 26 de febrero de 2009 . Consultado el 29 de marzo de 2009 .
- ^ "Encuesta sobre servidores web de marzo de 2022". Netcraft News . 29 de marzo de 2022. Archivado desde el original el 28 de mayo de 2022 . Consultado el 18 de junio de 2022 .
- ^ "Estadísticas de uso de servidores web". w3techs.com . Archivado desde el original el 2023-07-25 . Consultado el 2022-06-18 .
- ^ "Fundación Apache". www.apache.org . Archivado desde el original el 13 de diciembre de 2021 . Consultado el 22 de agosto de 2018 .
- ^ "Documental "Trillones y billones servidos" sobre la Apache Software Foundation". TheApacheFoundation / Youtube. 2020. Archivado desde el original el 22 de noviembre de 2021.
- ^ "Una base de confianza: construyendo un futuro basado en blockchain: Brian Behlendorf". Fundación Long Now / YouTube. 10 de febrero de 2020. Archivado desde el original el 22 de noviembre de 2021.
- ^ "Información sobre el proyecto del servidor HTTP Apache". 15 de abril de 1997. Archivado desde el original el 15 de abril de 1997.
- ^ "Preguntas frecuentes sobre el servidor Apache". Archivado desde el original el 6 de enero de 1997. Consultado el 15 de enero de 2017 .
- ^ McMillan, Robert (15 de abril de 2000). "Apache Power". Linux Magazine . Archivado desde el original el 28 de enero de 2019.
{{cite web}}
: CS1 maint: unfit URL (link) - ^ Claburn, Thomas (11 de enero de 2023). «Los nativos americanos piden a la fundación apache que cambie su nombre». The Register . Archivado desde el original el 12 de enero de 2023. Consultado el 12 de enero de 2023 .
- ^ Purdy, Kevin (12 de enero de 2023). «Un grupo tecnológico indígena pide a la Fundación Apache que cambie su nombre». Ars Technica . Archivado desde el original el 12 de enero de 2023. Consultado el 12 de enero de 2023 .
- ^ "Apache Docs". httpd.apache.org . Archivado desde el original el 5 de septiembre de 2018 . Consultado el 22 de agosto de 2018 .
- ^ "Servidor web Apache". webopedia.com . 23 de marzo de 1998. Archivado desde el original el 12 de mayo de 2021 . Consultado el 12 de mayo de 2021 .
- ^ "Tutorial del servidor HTTP Apache: archivos .htaccess". Apache.org. Archivado desde el original el 25 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "mod_proxy". Apache.org. Archivado desde el original el 29 de julio de 2018. Consultado el 19 de febrero de 2016 .
- ^ "mod_proxy_balancer". Apache.org. Archivado desde el original el 13 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "Balancer Manager". Apache.org. Archivado desde el original el 4 de marzo de 2016. Consultado el 19 de febrero de 2016 .
- ^ "Autenticación y autorización". Apache.org. Archivado desde el original el 2018-01-31 . Consultado el 2016-02-19 .
- ^ "mod_rewrite". Apache.org. Archivado desde el original el 13 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "mod_headers". Apache.org. Archivado desde el original el 21 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "mod_sed". Apache.org. Archivado desde el original el 4 de marzo de 2016. Consultado el 19 de febrero de 2016 .
- ^ "mod_substitute". Apache.org. Archivado desde el original el 4 de marzo de 2016. Consultado el 19 de febrero de 2016 .
- ^ "Tutorial de Apache httpd: Introducción a Server Side Includes". Apache.org. Archivado desde el original el 18 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "mod_usertrack". Apache.org. Archivado desde el original el 2021-05-12 . Consultado el 2021-05-12 .
- ^ "Tutorial de Apache: contenido dinámico con CGI". Apache.org. Archivado desde el original el 15 de noviembre de 2021. Consultado el 19 de febrero de 2016 .
- ^ "Directorios web por usuario". Apache.org. Archivado desde el original el 16 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "Expresiones en el servidor HTTP Apache". Apache.org. Archivado desde el original el 29 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "mod_status". Apache.org. Archivado desde el original el 13 de febrero de 2016. Consultado el 19 de febrero de 2016 .
- ^ "Módulo Apache: mod_ftp". Apache.org. Archivado desde el original el 10 de julio de 2017. Consultado el 8 de julio de 2017 .
- ^ "Servir archivos estáticos: una comparación entre Apache, Nginx, Varnish y G-WAN". Spoot! . 14 de marzo de 2011. Archivado desde el original el 24 de abril de 2014 . Consultado el 23 de abril de 2014 .
- ^ "worker - Apache HTTP Server versión 2.2". apache.org . Archivado desde el original el 2021-05-10 . Consultado el 2021-05-12 .
- ^ "Apache httpd 2.4" (PDF) . Archivado (PDF) desde el original el 27 de enero de 2012 . Consultado el 8 de febrero de 2012 .
- ^ "Elegir un servidor proxy". 14 de abril de 2014. Archivado desde el original el 3 de marzo de 2016 . Consultado el 19 de febrero de 2016 .
- ^ "Evaluación del rendimiento de Apache 2.4.1". 22 de febrero de 2012. Archivado desde el original el 2 de marzo de 2016. Consultado el 19 de febrero de 2016 .
- ^ "Rendimiento de Apache 2.4 con el módulo MPM de eventos en comparación con Nginx". eschrade.com . 3 de enero de 2014. Archivado desde el original el 13 de marzo de 2014 . Consultado el 13 de marzo de 2014 .
- ^ "Licencia Apache, versión 2.0". The Apache Software Foundation. Enero de 2004. Archivado desde el original el 18 de mayo de 2013. Consultado el 21 de mayo de 2013 .
- ^ Burton, Richard Antony. "Para su información: Apache HTTP Server 2.0.49 publicado". Grupo de noticias : alt.apache.configuration . Consultado el 16 de febrero de 2018 .
- ^ de Raadt, Theo (18 de febrero de 2004). "La nueva licencia de Apache". openbsd-misc (Lista de correo) . Consultado el 21 de mayo de 2013 .
- ^ "Política de derechos de autor". OpenBSD. Archivado desde el original el 13 de noviembre de 2017. Consultado el 12 de mayo de 2013 .
- ^ "apache-httpd-openbsd-1.3.20140502p2 – Versión mejorada y segura de Apache 1.3 para OpenBSD". Puertos OpenBSD . Archivado desde el original el 2015-03-02 . Consultado el 2014-12-28 .
- ^ Marvin, Rob (25 de marzo de 2015). «Dentro del nuevo servidor web httpd de OpenBSD». SD Times . Archivado desde el original el 12 de octubre de 2019. Consultado el 12 de octubre de 2019 .
- ^ "Guía de actualización de OpenBSD: 5.1 a 5.2". openbsd.org . Archivado desde el original el 22 de diciembre de 2017 . Consultado el 13 de marzo de 2014 .
- ^ jj, ed. (14 de marzo de 2014). "Atención: Apache eliminado de la base". OpenBSD Journal . Archivado desde el original el 18 de octubre de 2014. Consultado el 29 de diciembre de 2014 .
- ^ "Guía de actualización de OpenBSD: 5.5 a 5.6". openbsd.org . Archivado desde el original el 22 de diciembre de 2014 . Consultado el 29 de diciembre de 2014 .
- ^ "Anuncio: ¡Lanzamiento de Apache 1.3.0!". 6 de junio de 1998. Archivado desde el original el 11 de diciembre de 2018. Consultado el 6 de enero de 2015 .
- ^ "Apache HTTP Server 1.3.42 lanzado (versión final de 1.3.x)". apache.org . Archivado desde el original el 2015-03-11 . Consultado el 2015-01-06 .
- ^ "Lanzamiento oficial: Apache 2.0.35 ya está disponible". 6 de abril de 2002. Archivado desde el original el 12 de diciembre de 2018. Consultado el 6 de enero de 2015 .
- ^ "[Anuncio] Apache HTTP Server 2.0.65 lanzado". apache.org . Archivado desde el original el 28 de julio de 2015 . Consultado el 6 de enero de 2015 .
- ^ "Apache HTTP Server 2.2.0 Released". 1 de diciembre de 2005. Archivado desde el original el 12 de diciembre de 2018. Consultado el 6 de enero de 2015 .
- ^ "[Anuncio] Lanzamiento de Apache HTTP Server 2.2.34". apache.org . Archivado desde el original el 2020-08-21 . Consultado el 2019-04-03 .
- ^ "[ANUNCIO] Lanzamiento de Apache HTTP Server 2.4.1". 2012-02-21. Archivado desde el original el 2021-02-12 . Consultado el 2015-07-17 .
- ^ "Se lanzó Apache HTTP Server 2.4.62". apache.org . Consultado el 25 de octubre de 2017 .
- ^ Documentation Group. "Acerca del proyecto Apache HTTP Server - El proyecto Apache HTTP Server". apache.org . Archivado desde el original el 2008-06-07 . Consultado el 2021-05-12 .
- ^ "El proyecto de código abierto Apache HTTP Server en Ohloh. (nd). Ohloh, la red de código abierto. Consultado el 12 de noviembre de 2012". Archivado desde el original el 9 de marzo de 2012 . Consultado el 8 de febrero de 2012 .
- ^ "Capítulo 4. El servidor HTTP Apache". fedoraproject.org . Archivado desde el original el 25 de noviembre de 2012 . Consultado el 3 de diciembre de 2012 .
- ^ Zdrnja, Bojan (21 de junio de 2009). «Herramienta de mitigación de ataques DoS HTTP de Apache». SANS Institute . Archivado desde el original el 12 de noviembre de 2021. Consultado el 12 de noviembre de 2021 .
- ^ "Slowloris HTTP DoS". Archivado desde el original el 26 de abril de 2015. Consultado el 26 de junio de 2009 .
{{cite web}}
: CS1 maint: bot: original URL status unknown (link) - ^ "mod_noloris: defensa contra DoS". tribuna de niq. Julio de 2009. Archivado desde el original el 8 de octubre de 2011 . Consultado el 7 de enero de 2012 .
- ^ "mod_reqtimeout". Apache.org. Archivado desde el original el 2013-07-03 . Consultado el 2013-07-03 .
Enlaces externos
Wikilibros tiene un libro sobre el tema: Apache