De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

El servidor Apache HTTP , coloquialmente llamada Apache ( / ə p æ i / ə- PARCHE -ee ), es un libre y de código abierto multiplataforma servidor web de software, publicado bajo los términos de Apache License 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 de Apache HTTP Server se ejecutan en una distribución de Linux , [6] pero las versiones actuales también se ejecutan en Microsoft Windows , [7] OpenVMS , [8] y una amplia variedad de sistemas similares a Unix. Las versiones anteriores también se ejecutaron en NetWare , OS / 2 y otros sistemas operativos, [9] incluidos los puertos a mainframes. [10]

Originalmente basado en el servidor HTTPd NCSA , el desarrollo de Apache comenzó a principios de 1995 después de que el trabajo en el código NCSA se detuviera. 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 servir a más de 100 millones de sitios web . [12] En enero de 2021 , Netcraft estima que Apache sirvió 24,63% de los millones de sitios web más concurridos, mientras que Nginx sirvió 23,21% y Microsoft se encuentra en tercer lugar en el 6,85% (para algunos de otras estadísticas de Netcraft Nginx está por delante de Apache), [ 13]mientras que según W3Techs, Apache ocupa el primer lugar con un 35,0% y Nginx el segundo con un 33,0% y Cloudflare Server el tercero con un 17,3%. [14]

Nombre [ editar ]

Según la Apache Software Foundation , su nombre fue "elegido por respeto a las diversas naciones nativas americanas a las que se hace referencia colectivamente como Apache , conocidas por sus habilidades superiores en estrategia de guerra y su resistencia inagotable". Pero admitió que el nombre "también hace un lindo juego de palabras con 'un servidor web irregular ', un servidor hecho a partir de una serie de parches ". [15]

Hay otras fuentes para la teoría del juego de palabras de software "irregular", incluida la documentación oficial del proyecto en 1995, que decía: "Apache es un nombre lindo que se pegó. Se basó en un código existente y una serie de parches de software, un juego de palabras sobre Servidor "A PAtCHy". " [16] [17]

Pero en una entrevista de abril de 2000, Brian Behlendorf , uno de los creadores de Apache, afirmó que los orígenes de Apache no eran un juego de palabras, afirmando: [18]

El nombre salió literalmente de la nada. Ojalá pudiera decir que fue algo fantástico, pero fue de la nada. 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 dije: "Oye, ¿qué piensas de esa idea?" ... Alguien dijo que les gustaba el nombre y que era un juego de palabras realmente bueno. Y yo estaba como, "¿Un juego de palabras? ¿Qué quieres decir?" Dijo: "Bueno, estamos construyendo un servidor a partir de un montón de parches de software, ¿verdad? Así que es un servidor web con parches". Dije: "Oh, está bien". ... Cuando pensé en el nombre, no. Simplemente connotó: "No tomes prisioneros. Sé un poco agresivo y patea traseros".

Cuando Apache se ejecuta en Unix , su nombre de proceso es httpd, que es la abreviatura de " demonio HTTP ". [19]

Descripción general de las funciones [ editar ]

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 admitir lenguajes de programación del lado del servidor como Perl , Python , Tcl y PHP . Los módulos de autenticación más populares incluyen mod_access, mod_auth, mod_digest y mod_auth_digest, el sucesor de mod_digest. Una muestra de otras características incluye la compatibilidad con Secure Sockets Layer y Transport Layer Security ( mod_ssl ), un módulo proxy ( mod_proxy ), una reescritura de URL módulo (mod_rewrite), archivos de registro personalizados (mod_log_config) y soporte de 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 con la reducción del 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, un ordenador con una instalación de Apache podría servir al mismo tiempo 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 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 existe una gran biblioteca pública de complementos de Apache. [20]

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 basados ​​en eventos / asíncronos , roscados y prefork.
  • Altamente escalable (maneja fácilmente más de 10,000 conexiones simultáneas )
  • Manejo de archivos estáticos, archivos de índice, auto-indexación y negociación de contenido
  • .htaccesssoporte de configuración por directorio [21]
  • Proxy inverso con almacenamiento en caché [22]
    • Equilibrio de carga [23] con comprobaciones de estado en banda
    • Múltiples mecanismos de equilibrio de carga.
    • Tolerancia a fallas y Conmutación por falla con recuperación automática
    • Compatibilidad con WebSocket , FastCGI , SCGI , AJP y uWSGI con almacenamiento en caché
    • Configuración dinámica [24]
  • TLS / SSL con soporte de grapado SNI y OCSP , a través de OpenSSL o wolfSSL .
  • Servidores virtuales basados ​​en nombre y dirección IP
  • Compatible con IPv6
  • Soporte HTTP / 2
  • Control de acceso de autorización y autenticación detallada [25]
  • compresión y descompresión gzip
  • Reescritura de URL [26]
  • Encabezados [27] y contenido [28] [29] reescritura
  • Registro personalizado con rotación
  • Limitación de conexión concurrente
  • Limitación de la velocidad de procesamiento de solicitudes
  • Aceleración del ancho de banda
  • El lado del servidor incluye [30]
  • Dirección IP basados en geolocalización
  • Seguimiento de usuarios y sesiones [31]
  • WebDAV
  • Scripting integrado en Perl , PHP y Lua
  • Soporte CGI [32]
  • public_htmlpáginas web por usuario [33]
  • Analizador de expresiones genéricas [34]
  • Vistas de estado en tiempo real [35]
  • Soporte XML [36]
  • Soporte FTP (por un módulo separado) [37]

Rendimiento [ editar ]

En lugar de implementar una arquitectura única, Apache proporciona una variedad de módulos de multiprocesamiento (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, con el fin de coincidir mejor con las demandas de cada infraestructura en particular. Por tanto, la elección de 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 simplemente manejar más solicitudes, asegurando así un procesamiento consistente y confiable de las solicitudes dentro de plazos razonables. [ aclaración necesaria ]

Para la entrega de páginas estáticas, la serie Apache 2.2 se consideró significativamente más lenta que nginx y barniz . [38] Para abordar este problema, los desarrolladores de Apache crearon Event MPM, que combina el uso de varios procesos y varios subprocesos por proceso en un bucle asincrónico basado en eventos . [39] [Se necesita aclaración ] 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. [40] [41] [42]Sin embargo, algunos puntos de referencia independientes pero significativamente desactualizados muestran que todavía es la mitad de rápido que nginx, p. Ej. [43]

Licencias [ editar ]

La base de código del servidor HTTP Apache se volvió a otorgar a la licencia Apache 2.0 (de la licencia 1.1 anterior) en enero de 2004, [44] y el servidor Apache HTTP 1.3.31 y 2.0.49 fueron las primeras versiones que utilizaron la nueva licencia. [45]

Al proyecto OpenBSD no le gustó el cambio y continuó el uso de versiones anteriores a la 2.0 de Apache, efectivamente bifurcando Apache 1.3.x para sus propósitos. [46] [47] [48] Inicialmente lo reemplazaron con Nginx , y poco después hicieron su propio reemplazo, OpenBSD Httpd, basado en el proyecto relayd. [49] [50] [51] [52]

Versiones [ editar ]

Versión 1.1: La licencia Apache 1.1 fue aprobada por la ASF en 2000: el cambio principal de la licencia 1.0 se encuentra en la 'cláusula de publicidad' (sección 3 de la licencia 1.0); Los productos derivados ya no están obligados a incluir atribuciones en sus materiales publicitarios, solo en su documentación.

Versión 2.0: 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 pertenecen a ASF, mejorar la compatibilidad con software basado en GPL y permitir que la licencia se incluya como referencia en su lugar. de enumerados en todos los archivos, aclarando la licencia sobre las contribuciones y requiriendo una licencia de patente sobre las contribuciones que necesariamente infringen las patentes del contribuyente.

Desarrollo [ editar ]

El Proyecto del servidor HTTP Apache es un esfuerzo de desarrollo de software colaborativo destinado a crear una implementación de código fuente robusta, de calidad comercial, rica en funciones y disponible de forma gratuita de un servidor HTTP (Web). El proyecto es administrado conjuntamente 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 es parte de Apache Software Foundation. Además, cientos de usuarios han contribuido con ideas, código y documentación al proyecto. [61] [62] [63]

Apache 2.4 eliminó la compatibilidad con las plataformas BeOS , TPF , A / UX , NeXT y Tandem . [9]

Seguridad [ editar ]

Apache, como cualquier otro software de servidor, puede ser pirateado y explotado. La principal herramienta de ataque de Apache es Slowloris , que aprovecha un error en el software Apache. [ cita requerida ] Crea muchos sockets y mantiene a cada uno de ellos vivo y ocupado enviando varios bytes (conocidos como "encabezados de mantener vivo") 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. [64] [65]Desde Apache 2.2.15, Apache envía el módulo mod_reqtimeout como la solución oficial respaldada por los desarrolladores. [66]

Ver también [ editar ]

  • .htaccess
  • .htpasswd
  • ApacheBench
  • Comparación de software de servidor web
  • Servidor HTTP de IBM
  • LAMP (paquete de software)
  • Lista de módulos de Apache
  • Lista de paquetes de software gratuitos y de código abierto
  • Proyecto POSSE
  • suEXEC
  • Apache Tomcat : otro servidor web desarrollado por Apache Software Foundation

Referencias [ editar ]

  1. ^ "Acerca del proyecto del servidor HTTP Apache" . Fundación de software Apache . Archivado desde el original el 7 de junio de 2008 . Consultado el 25 de junio de 2008 .
  2. ^ "Lanzamientos · apache / httpd · GitHub" . GitHub . Consultado el 7 de agosto de 2020 .
  3. ^ "Copia archivada" . Archivado desde el original el 2 de marzo de 2016 . Consultado el 27 de febrero de 2016 .Mantenimiento de CS1: copia archivada como título ( enlace )
  4. ^ "Idiomas" . Servidor HTTP Apache . Software Black Duck. Ohloh. Archivado desde el original el 7 de abril de 2014 . Consultado el 2 de abril de 2014 .
  5. ^ "Compilación e instalación" . httpd.apache.org . La Fundación de Software Apache . Consultado el 9 de mayo de 2016 .
  6. ^ "Distribuciones de OS / Linux usando Apache" . secure1.securityspace.com . Consultado el 17 de septiembre de 2018 .
  7. ^ "Notas específicas de la plataforma - Servidor Apache HTTP versión 2.4" . httpd.apache.org . Consultado el 21 de enero de 2019 .
  8. ^ "Servidor web seguro" . vmssoftware.com . Consultado el 20 de octubre de 2020 .
  9. ^ a b "Actualización a 2.4 desde 2.2" . Se ha eliminado el soporte de plataforma para BeOS, TPF e incluso plataformas más antiguas como A / UX, Next y Tandem. Se creía que de todos modos estaban rotos.
  10. ^ "El puerto EBCDIC de Apache - Servidor HTTP Apache versión 2.4" . httpd.apache.org . Consultado el 16 de agosto de 2019 .
  11. ^ Cuota de mercado de Netcraft para los mejores servidores en todos los dominios Agosto de 1995 - hoy (actualizado mensualmente)
  12. ^ "Encuesta de servidor Web de febrero de 2009" . Netcraft . Archivado desde el original el 26 de febrero de 2009 . Consultado el 29 de marzo de 2009 .
  13. ^ "Encuesta de servidor web de diciembre de 2020" . Noticias de Netcraft . Consultado el 27 de enero de 2021 .
  14. ^ "Estadísticas de uso y cuota de mercado de servidores Web, enero de 2021" . w3techs.com . Consultado el 27 de enero de 2021 .
  15. ^ "Fundación Apache" . www.apache.org . Consultado el 22 de agosto de 2018 .
  16. ^ "Información sobre el proyecto del servidor HTTP Apache" . 1997-04-15. Archivado desde el original el 15 de abril de 1997.
  17. ^ "Preguntas frecuentes sobre el servidor Apache" . Archivado desde el original el 6 de enero de 1997 . Consultado el 15 de enero de 2017 .
  18. ^ McMillan, Robert (15 de abril de 2000). "Apache Power" . Revista Linux . Archivado desde el original el 28 de enero de 2019.
  19. ^ "Apache Docs" . httpd.apache.org . Consultado el 22 de agosto de 2018 .
  20. ^ "¿Qué es el servidor web Apache? Webopedia" . webopedia.com .
  21. ^ "Tutorial del servidor HTTP Apache: archivos .htaccess" . Apache.org.
  22. ^ "mod_proxy" . Apache.org.
  23. ^ "mod_proxy_balancer" . Apache.org.
  24. ^ "Administrador de equilibradores" . Apache.org.
  25. ^ "Autenticación y autorización" . Apache.org.
  26. ^ "mod_rewrite" . Apache.org.
  27. ^ "mod_headers" . Apache.org.
  28. ^ "mod_sed" . Apache.org.
  29. ^ "mod_substitute" . Apache.org.
  30. ^ "Tutorial de Apache httpd: Introducción a las inclusiones del lado del servidor" . Apache.org.
  31. ^ "mod_usertrack" . Apache.org.
  32. ^ "Tutorial de Apache: contenido dinámico con CGI" . Apache.org.
  33. ^ "Directorios web por usuario" . Apache.org.
  34. ^ "Expresiones en el servidor HTTP Apache" . Apache.org.
  35. ^ "mod_status" . Apache.org.
  36. ^ "mod_xml2enc" . Apache.org.
  37. ^ "Módulo Apache: mod_ftp" . Apache.org.
  38. ^ "Sirviendo archivos estáticos: una comparación entre Apache, Nginx, Varnish y G-WAN" . Spoot! .
  39. ^ "trabajador - Servidor Apache HTTP versión 2.2" . apache.org .
  40. ^ Apache httpd 2.4
  41. ^ "Elegir un servidor proxy" .
  42. ^ "Evaluación de rendimiento de Apache 2.4.1" .
  43. ^ "Rendimiento de Apache 2.4 con el evento MPM en comparación con Nginx" . eschrade.com .
  44. ^ "Licencia Apache, versión 2.0" . La Fundación de Software Apache. Enero de 2004 . Consultado el 21 de mayo de 2013 .
  45. ^ Burton, Richard Antony. "Para su información: Apache HTTP Server 2.0.49 lanzado" . Grupo de noticiasalt.apache.configuration . Consultado el 16 de febrero de 2018 .
  46. 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 .
  47. ^ "Política de derechos de autor" . OpenBSD . Consultado el 12 de mayo de 2013 .
  48. ^ "apache-httpd-openbsd-1.3.20140502p2 - OpenBSD versión mejorada y segura de Apache 1.3" . Puertos OpenBSD . Consultado el 28 de diciembre de 2014 .
  49. ^ Marvin, Rob (25 de marzo de 2015). "Dentro del nuevo servidor web httpd de OpenBSD" . Tiempos SD . Consultado el 12 de octubre de 2019 .
  50. ^ "Guía de actualización de OpenBSD: 5.1 a 5.2" . openbsd.org .
  51. ^ jj, ed. (14 de marzo de 2014). "Aviso: Apache eliminado de la base" . Diario de OpenBSD .
  52. ^ "Guía de actualización de OpenBSD: 5.5 a 5.6" . openbsd.org .
  53. ^ "Anuncio: Apache 1.3.0 lanzado!" . 1998-06-06 . Consultado el 6 de enero de 2015 .
  54. ^ "Apache HTTP Server 1.3.42 lanzado (versión final de 1.3.x)" . apache.org .
  55. ^ "Versión oficial: Apache 2.0.35 ahora es GA" . 2002-04-06 . Consultado el 6 de enero de 2015 .
  56. ^ "[Anuncio] Apache HTTP Server 2.0.65 lanzado" . apache.org .
  57. ^ "Apache HTTP Server 2.2.0 lanzado" . 2005-12-01 . Consultado el 6 de enero de 2015 .
  58. ^ "[Anunciar] Apache HTTP Server 2.2.34 lanzado" . apache.org .
  59. ^ "[ANUNCIO] Apache HTTP Server 2.4.1 lanzado" . 2012-02-21 . Consultado el 17 de julio de 2015 .
  60. ^ "Apache HTTP Server 2.4.46 lanzado" . apache.org .
  61. ^ Grupo de documentación. "Acerca del proyecto del servidor HTTP Apache - El proyecto del servidor HTTP Apache" . apache.org .
  62. ^ El proyecto de código abierto del servidor HTTP Apache en Ohloh. (Dakota del Norte). Ohloh, la red de código abierto. Consultado el 12 de noviembre de 2012
  63. ^ "Capítulo 4. El servidor HTTP Apache" . fedoraproject.org .
  64. ^ "Slowloris HTTP DoS" . Archivado desde el original el 26 de abril de 2015 . Consultado el 26 de junio de 2009 .CS1 maint: bot: estado de URL original desconocido ( enlace )
  65. ^ "mod_noloris: defendiendo contra DoS" . la caja de jabón de niq . Consultado el 7 de enero de 2012 .
  66. ^ "mod_reqtimeout" . Apache.org . Consultado el 3 de julio de 2013 .

Enlaces externos [ editar ]

  • Página web oficial