Servidor Apache HTTP | |
---|---|
| |
Tipo de | servidor web y software de servidor |
Autor | Roberto McCool [d] |
Desarrollador | Fundación de software Apache [1] |
Escrito en | C [3] [4] [5] […] |
Sistema operativo | Sistema operativo similar a Microsoft Windows y Unix |
Idiomas de la interfaz | inglés |
Primera edición | 1995 |
ultima versión |
|
Licencia | Licencia Apache 2.0 [6] |
Sitio web | httpd.apache.org_ _ |
Archivos multimedia en Wikimedia Commons |
El servidor Apache HTTP (es una abreviatura distorsionada del inglés. Un servidor irregular ; entre los usuarios rusos, generalmente se acepta la traducción de Apache ) es un servidor web gratuito .
Apache es un software multiplataforma compatible con los sistemas operativos Linux , BSD , macOS , Microsoft Windows , Novell NetWare y BeOS .
Las principales ventajas de Apache son la confiabilidad y la flexibilidad de configuración. Te permite conectar módulos externos para proporcionar datos, usar un DBMS para autenticar usuarios, modificar mensajes de error, etc. Soporta IPv4 .
El servidor se escribió a principios de 1995 y se cree que su nombre se deriva del nombre jocoso "un [servidor] irregular" , ya que corrigió errores en el entonces popular servidor NCSA HTTPd 1.3 World Wide Web . Posteriormente, a partir de la versión 2.x, el servidor fue reescrito y ahora no contiene el código NCSA . Por el momento, el desarrollo se lleva a cabo en la rama 2.4, y solo se realizan arreglos de seguridad en las versiones 1.3, 2.0 y 2.2. Por el momento, la última versión de la rama 2.4 es la 2.4.46 (5 de agosto de 2020), para la primera versión es la 1.3.42.
El servidor web Apache es desarrollado y mantenido por una comunidad abierta de desarrolladores bajo los auspicios de Apache Software Foundation y está incluido en muchos productos de software , incluida la base de datos Oracle e IBM WebSphere .
Desde abril de 1996 hasta el presente ha sido el servidor HTTP más popular en Internet . Las estadísticas de Netcraft muestran los siguientes datos de uso de Apache:
Apache tiene una cuota de mercado en Rusia de hasta el 17,45%. Es el servidor web más popular después de NGINX con una cuota de mercado del 64,89 % [11] .
El núcleo de Apache incluye funciones básicas como el manejo de archivos de configuración, el protocolo HTTP y un sistema de carga de módulos. El kernel (a diferencia de los módulos) está completamente desarrollado por Apache Software Foundation , sin la participación de programadores externos.
Teóricamente, el núcleo de apache puede funcionar en su forma pura, sin el uso de módulos. Sin embargo, la funcionalidad de tal solución es extremadamente limitada.
El núcleo de Apache está escrito completamente en el lenguaje de programación C.
El sistema de configuración de Apache se basa en archivos de configuración basados en texto . Tiene tres niveles de configuración condicional:
Tiene su propio lenguaje de archivos de configuración basado en bloques de directivas. Casi todos los parámetros del núcleo se pueden cambiar a través de archivos de configuración, hasta el control de MPM. La mayoría de los módulos tienen sus propios parámetros.
Algunos módulos usan archivos de configuración del sistema operativo (por ejemplo , /etc/passwd y /etc/hosts ) en su trabajo.
Además, los parámetros se pueden configurar a través de los interruptores de la línea de comandos .
Existen muchos modelos de multiprocesamiento simétrico para el servidor web Apache . Aquí están los principales:
Nombre | Desarrollador | SO compatible | Descripción | Objetivo | Estado |
---|---|---|---|---|---|
trabajador | Fundación de software Apache | Linux , FreeBSD | Modelo híbrido multiprocesador-multihilo. Mientras mantiene la estabilidad de las soluciones multiprocesador, le permite atender a una gran cantidad de clientes con un uso mínimo de recursos. | Servidores web de carga media. | Estable. |
pre-horquilla | Fundación de software Apache | Linux , FreeBSD | MPM, basado en la creación previa de procesos separados, no utiliza el mecanismo de subprocesos. | Mayor seguridad y estabilidad debido al aislamiento de procesos entre sí, manteniendo la compatibilidad con librerías antiguas que no soportan hilos. | Estable. |
niño | Fundación de software Apache | linux | Modelo híbrido, con un número fijo de procesos. | Servidores altamente cargados, la capacidad de ejecutar procesos secundarios utilizando un nombre de usuario diferente para mejorar la seguridad. | En desarrollo, inestable. |
netware | Fundación de software Apache | NetWare de Novell | Modelo de subprocesos múltiples optimizado para entornos NetWare. | Servidores Novell NetWare | Estable. |
ganar | Fundación de software Apache | Microsoft Windows | Un modelo de subprocesos múltiples creado para el sistema operativo Microsoft Windows . | Servidores que ejecutan Windows Server . | Estable. |
Apache-ITK | Steinar H Gunderson | Linux , FreeBSD | MPM basado en el modelo prefork. Permite que cada host virtual se ejecute con uid y gid independientes . | Servidores alojados, servidores críticos para el aislamiento de usuarios y contabilidad de recursos. | Estable. |
por usuario | sean gabriel heacock | Linux , FreeBSD | Modelo basado en MPM por niño. Permite que cada host virtual se ejecute con uid y gid independientes . No usa hilos. | Garantizar una seguridad mejorada, trabajando con bibliotecas que no admiten subprocesos. | Lanzamiento estable con fecha del 4 de octubre de 2007 , lanzamiento experimental con fecha del 10 de septiembre de 2009 . |
evento | Fundación de software Apache | Linux , FreeBSD | El modelo utiliza subprocesos y el sondeo seguro para subprocesos se basa en el trabajador. está diseñado para atender más solicitudes al mismo tiempo al descargar parte del procesamiento a los subprocesos de escucha, liberando subprocesos de trabajo para atender nuevas solicitudes. | Ofrecer un rendimiento mejorado. no funciona bien en plataformas más antiguas que carecen de un buen subprocesamiento múltiple, pero el requisito de EPoll o KQueue hace que esto sea discutible. | Estable. |
Apache HTTP Server admite la modularidad . Hay más de 500 módulos [12] que realizan diversas funciones. Algunos de ellos son desarrollados por el equipo de Apache Software Foundation , pero la mayoría son de desarrolladores individuales de código abierto .
Los módulos pueden incluirse en el servidor en el momento de la compilación o cargarse dinámicamente, a través de las directivas del archivo de configuración.
Los módulos hacen cosas como:
Algunas aplicaciones web, como los paneles de control de ISPmanager y VDSmanager, se implementan como un módulo de Apache.
Apache tiene un mecanismo de host virtual incorporado . Le permite servir completamente muchos sitios ( nombres de dominio ) en una dirección IP , mostrando su propio contenido para cada uno de ellos.
Para cada host virtual, puede especificar su propia configuración de kernel y módulo, restringir el acceso a todo el sitio o archivos individuales. Algunos MPM, como Apache-ITK, le permiten ejecutar un proceso httpd para cada host virtual con uid y guid separados .
También hay módulos que le permiten tener en cuenta y limitar los recursos del servidor ( CPU , RAM , tráfico ) para cada host virtual.
Hay muchos módulos que agregan soporte para varios lenguajes de programación y sistemas de desarrollo a Apache.
Éstos incluyen:
Además, Apache admite mecanismos CGI y FastCGI , lo que le permite ejecutar programas en casi todos los lenguajes de programación, incluidos C , C++ , Lua , sh , Java .
Apache tiene varios mecanismos de seguridad y control de acceso a datos. Los principales son:
Algunos módulos MPM tienen la capacidad de iniciar cada proceso de Apache utilizando un uid y un gid diferentes con el usuario y el grupo de usuarios adecuados.
También hay un mecanismo suexec que se utiliza para ejecutar scripts y aplicaciones CGI con derechos y credenciales de usuario.
Para implementar el cifrado de los datos transmitidos entre el cliente y el servidor se utiliza el mecanismo SSL , implementado a través de la librería OpenSSL . Los certificados X.509 se utilizan para autenticar el servidor web .
Existen herramientas de seguridad externas como mod_security .
A partir de la versión 2.0, el servidor pudo determinar la configuración regional del usuario . Los mensajes de error y eventos enviados al navegador ahora están en varios idiomas y utilizan la tecnología SSI .
Además, es posible implementar por medio del servidor la visualización de diferentes páginas para usuarios con diferentes locales. Apache admite muchas codificaciones, incluida Unicode , que le permite utilizar páginas creadas en cualquier codificación y en cualquier idioma.
El administrador puede configurar páginas y controladores personalizados para todos los errores y eventos HTTP como 404 (No encontrado) o 403 (Prohibido). Incluso existe la posibilidad de ejecutar scripts y mostrar mensajes en diferentes idiomas.
En las versiones 1.3 y anteriores, se implementó el mecanismo de inclusión del lado del servidor, que le permite generar documentos HTML de forma dinámica en el lado del servidor.
SSI es administrado por el módulo mod_include incluido en la distribución base de Apache.
Fundación de software Apache | |||||||
---|---|---|---|---|---|---|---|
Proyectos de primer nivel |
| ||||||
Subproyectos |
| ||||||
Web de Apache |
| ||||||
Otros proyectos | |||||||
Desarrollando proyectos ( Incubadora ) |
| ||||||
Proyectos fuera de servicio ( Ático ) | |||||||
|