# Servidor HTTP Apache

El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual según la normativa RFC 2616. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo. Su nombre se debe a que alguien quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de Estados Unidos, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor "parcheado") suena igual que Apache Server.
El servidor Apache es desarrollado y mantenido por una comunidad de usuarios bajo la supervisión de la Apache Software Foundation dentro del proyecto HTTP Server (httpd).
Apache presenta entre otras características altamente configurables, bases de datos de autenticación y negociado de contenido, pero fue criticado por la falta de una interfaz gráfica que ayude en su configuración.
Apache tiene amplia aceptación en la red: desde 1996, Apache es el servidor HTTP más usado. Jugó un papel fundamental en el desarrollo de la World Wide Web y alcanzó su máxima cuota de mercado en 2005, siendo el servidor empleado en el 70% de los sitios web en el mundo. Sin embargo, ha sufrido un descenso en su cuota de mercado en los últimos años (estadísticas históricas y de uso diario proporcionadas por Netcraft). En 2009, se convirtió en el primer servidor web que alojó más de 100 millones de sitios web.
La mayoría de las vulnerabilidades de la seguridad descubiertas y resueltas tan solo pueden ser aprovechadas por usuarios locales y no remotamente. Sin embargo, algunas se pueden accionar remotamente en ciertas situaciones, o explotar por los usuarios locales maliciosos en las disposiciones de recibimiento compartidas que utilizan PHP como módulo de Apache.

## Ventajas

* Modular
* Código abierto
* Multi-plataforma
* Extensible
* Popular (fácil conseguir ayuda/soporte)

## Módulos

La arquitectura del servidor Apache es muy modular. El servidor consta de una sección core y diversos módulos que aportan mucha de la funcionalidad que podría considerarse básica para un servidor web. Algunos de estos módulos son:
* mod_ssl - Comunicaciones Seguras vía TLS.
* mod_rewrite - reescritura de direcciones (generalmente utilizado para transformar páginas dinámicas como php en páginas estáticas html para así engañar a los navegantes o a los motores de búsqueda en cuanto a cómo fueron desarrolladas estas páginas).
* mod_dav - Soporte del protocolo WebDAV (RFC 2518).
* mod_deflate - Compresión transparente con el algoritmo deflate del contenido enviado al cliente.
* mod_auth_ldap (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). - Permite autentificar usuarios contra un servidor LDAP.
* mod_proxy_ajp - Conector para enlazar con el servidor Jakarta Tomcat de páginas dinámicas en Java (servlets y JSP).
* mod_cfml - Conector CFML usado por Railo.
El servidor de base puede ser extendido con la inclusión de módulos externos entre los cuales se encuentran:
* mod_cband - Control de tráfico y limitador de ancho de banda.
* mod_perl - Páginas dinámicas en Perl.
* mod_php - Páginas dinámicas en PHP.
* mod_python - Páginas dinámicas en Python.
* mod_rexx - Páginas dinámicas en REXX y Object REXX.
* mod_ruby - Páginas dinámicas en Ruby.
* mod_aspdotnet - Páginas dinámicas en .NET de Microsoft (Módulo retirado).
* mod_mono - Páginas dinámicas en Mono
* mod_security - Filtrado a nivel de aplicación, para seguridad.

## Uso

Apache es usado principalmente para enviar páginas web estáticas y dinámicas en la World Wide Web. Muchas aplicaciones web están diseñadas asumiendo como ambiente de implantación a Apache, o que utilizarán características propias de este servidor web.
Apache es el componente de servidor web en la popular plataforma de aplicaciones LAMP, junto a MySQL y los lenguajes de programación PHP/Perl/Python (y ahora también Ruby).
Este servidor web es redistribuido como parte de varios paquetes propietarios de software, incluyendo la base de datos Oracle y el IBM WebSphere application server. MacOS integra apache como parte de su propio servidor web y como soporte de su servidor de aplicaciones WebObjects. Es soportado de alguna manera por Borland en las herramientas de desarrollo Kylix y Delphi. Apache es incluido con Novell NetWare 6.5, donde es el servidor web por defecto, y en muchas distribuciones Linux.
Apache es usado para muchas otras tareas donde el contenido necesita ser puesto a disposición en una forma segura y confiable. Un ejemplo es al momento de compartir archivos desde una computadora personal hacia Internet. Un usuario que tiene Apache instalado en su escritorio puede colocar arbitrariamente archivos en la raíz de documentos de Apache, desde donde pueden ser compartidos.
Los programadores de aplicaciones web a veces utilizan una versión local de Apache con el fin de previsualizar y probar código mientras este es desarrollado.
Microsoft Internet Information Services (IIS) es el principal competidor de Apache, así como Sun Java System Web Server de Sun Microsystems y un anfitrión de otras aplicaciones como Zeus Web Server. Otro de los competidores es Nginx. Algunos de los más grandes sitios web del mundo están ejecutándose sobre Apache. La capa frontal (front end) del motor de búsqueda Google está basado en una versión modificada de Apache, denominada Google Web Server (GWS). Muchos proyectos de Wikimedia también se ejecutan sobre servidores web Apache.

## Adopción de Apache

En febrero de 2017, la adopción de Apache fue:
Argentina: 54,58% del total de dominios.
España: 65,31% del total de dominios.
México: 53.52% del total de dominios.
Chile: 62,71% del total de dominios.
Colombia: 27,07% del total de dominios.

## Configuración

La configuración de Apache se realiza principalmente en el archivo de configuración apache2.conf en Ubuntu o httpd.conf en otros sistemas. Cualquier modificación en este archivo requiere reiniciar el servidor o forzar la lectura de los archivos de configuración.
También se utilizan archivos de configuración de los hosts virtuales para establecer configuraciones específicas para cada dominio o sitio web alojado en el servidor.
Estos archivos permiten establecer reglas de reescritura, configurar autenticación, habilitar compresión y manejar otros aspectos de la configuración del servidor.

## Licencia

La licencia de software bajo la cual la fundación Apache es distribuido es una parte distintiva de la historia de Apache HTTP Server y de la comunidad de código abierto. La Licencia Apache permite la distribución de derivados de código abierto y cerrado a partir de su código fuente original.
La Free Software Foundation no considera a la Licencia Apache como compatible con la versión 2 de la GNU General Public License (GPL), en la cual el software licenciado bajo la Apache License no puede ser integrado con software distribuido bajo la GPL:
Sin embargo, la versión 3 de la GPL incluye una provisión (Sección 7e) que le permite ser compatible con licencias que tienen cláusulas de represalia de patentes, incluyendo a la Licencia Apache.
El nombre Apache es una marca registrada y puede ser solo utilizada con el permiso expreso del dueño de la marca.