¿Qué es Apache y para qué sirve?

7min

Apache es un servidor web de código abierto, el más popular de los que encontramos en el mundo de la web. Como todo servidor web, maneja solicitudes HTTP. Es decir, está al tanto de las demandas de los usuarios que desean consultar una URL y les envía el contenido solicitado como respuesta. En este artículo vamos a profundizar en estos conceptos y en el funcionamiento de Apache, así como compararlo con otras alternativas como NGINX.

Índice

¿Qué es el servidor web Apache?

El servidor web Apache es el principal producto de software mantenido por la fundación Apache. Es un software de servidor web de código abierto, multiplataforma y gratuito. Como todo servidor web es responsable de atender las solicitudes de los clientes cuando quieren consultar una URL. Apache está atento a las solicitudes, que llegan mediante el protocolo HTTP y se encarga de enviar las respuestas a los clientes. 

En el trasiego de la información generalmente se transfieren páginas web, pero Apache está preparado para enviar todo tipo de archivos como imágenes, PDF o cualquier otro archivo descargable mediante el navegador. Además, es capaz de ejecutar código en ciertos lenguajes de programación, siempre que tenga instalado el complemento adecuado, para permitir a los desarrolladores la creación de páginas con programación del lado del servidor.

Desde su lanzamiento en 1995, Apache es una de las herramientas más populares de Internet, y es con diferencia el servidor web más usado.

Principales características de Apache

El servidor web Apache ofrece un conjunto de funcionalidades amplio, al que se le pueden instalar diversos complementos para obtener soporte a todavía más características. Algunas de las más populares son:

Manejo de solicitudes HTTP

El primer objetivo de Apache y los servidores web es el manejo de solicitudes HTTP. Por supuesto, es capaz de manejar este protocolo y todos los relacionados, como HTTPS, o HTTP2.

Soporte para diferentes sistemas operativos

Aunque inicialmente se desarrolló para sistemas basados en Unix, Apache ofrece soporte para todos los sistemas operativos populares, incluyendo Windows, MacOS, y por supuesto  Linux. En ambientes de producción lo normal es que se ejecute sobre Linux, pero el hecho de soportar Windows o MacOS permite que los profesionales puedan usar el servidor web en local, para probar y desarrollar páginas web con sus ordenadores personales.

Configuración y personalización

Uno de los puntos fuertes de Apache es su flexibilidad y sus amplias capacidades de personalización. Para ello se utilizan archivos de configuración de los que hablaremos más adelante, en los que los administradores de sistemas pueden indicar cómo se debe de comportar el servidor web, permitiendo que esta configuración cambie según las necesidades de cada sitio web alojado.

Casos de uso comunes de Apache

Podemos usar Apache principalmente para alojar páginas web, pero existen otros casos de uso frecuentes.

Hosting y alojamiento de sitios web

Como decimos, el uso más común de Apache es servir sitios web, estando atento a solicitudes HTTP y enviando al cliente web, generalmente un navegador, todos aquellos archivos que forman parte de la página, desde el archivo HTML, el CSS, JavaScript, etc.

Desarrollo y pruebas locales

También es frecuente la instalación de Apache por parte de los desarrolladores para poder crear sitios y aplicaciones web y poder probarlos en sus máquinas locales.

Implementación de aplicaciones web

Apache permite también la ejecución de lenguajes, siendo el más popular PHP. Gracias a ello, además de páginas estáticas, puede servir de plataforma para blogs, sitios de comercio electrónico y todo tipo de aplicaciones web. Apache es uno de los componentes principales del stack LAMP (Linux, Apache, MySQL y PHP), que es la base más popular para la implementación de aplicaciones web.

Directivas y archivos de configuración básica de Apache

Ahora vamos a resumir algunas de las posibilidades de configuración del servidor web Apache. Todo se hace mediante la edición de archivos de texto que tienen las directivas de configuración necesarias para personalizar el sistema.

Archivo httpd.conf y sus parámetros principales

El archivo httpd.conf es el lugar principal de configuración de Apache. Este archivo tiene las configuraciones globales del servidor web, que afectan al funcionamiento de manera general.

Dentro de este archivo, puedes definir parámetros como el puerto de escucha, el directorio raíz del documento y muchas más cosas. Sin embargo, la mayoría de las personalizaciones se pueden realizar también, o sobreescribir, a nivel de dominio.

VirtualHosts y configuración de múltiples sitios

También fundamentales son las configuraciones a nivel de dominio, que se realizan por medio de los denominados VirtualHosts. Estas configuraciones de Apache permiten sobreescribir las configuraciones globales, ya sea para distintas IP o para distintos nombres de dominio asociados a los sitios alojados en el servidor.

En Apache podemos tener configuraciones de VirtualHost diferentes para cada proyecto alojado, lo que aumenta la flexibilidad del servidor web. Además, los virtualhost son fundamentales para las empresas de alojamiento, y los administradores de servidores en general, ya que permiten que varios dominios puedan estar alojados en un mismo servidor.

Seguridad de Apache

La seguridad es uno de los aspectos más importantes en los servidores web y Apache es muy consciente de ello. Para ello permite diversas configuraciones.

Gestión de permisos y accesos

Apache permite una gestión detallada de permisos a múltiples niveles. Mediante directivas como Directory es posible definir quién puede acceder a qué partes de un sitio web y qué permisos puede obtener, si puede ver el listado de los archivos, si se permite sobreescribir los permisos mediante el archivo .htaccess, etc.

Uso de certificados SSL/TLS

Es posible usar certificados SSL/TLS para garantizar que las transmisiones entre el cliente y el servidor son seguras. Estas configuraciones son necesarias para que se pueda acceder a los sitios web por HTTPS.

Cómo mejorar el rendimiento de Apache

También queremos dar algunas pinceladas sobre la capacidad de Apache para la mejora del rendimiento del servidor.

Caché de contenido estático

El cacheo de contenido estático puede mejorar de manera significativa la velocidad de un sitio. El contenido estático es aquel que no necesita generarse dinámicamente y su almacenamiento en la caché permite que se pueda servir de una manera más rápida, a la vez que aumenta el rendimiento del servidor web. Además, si se habilita la caché en el navegador se consigue una mayor velocidad de navegación ya que no es necesario que el cliente necesite descargar de nuevo contenido que del que ya dispone.

Existen diversos módulos para habilitar la caché de Apache, como mod_cache, mod_expires o mod_headers.

Ajustes de rendimiento del servidor

Además de la caché del contenido existen otras configuraciones que se pueden realizar, por medio de directivas y parámetros de configuración, con el objetivo de aumentar el rendimiento de Apache y conseguir que aumente la capacidad de carga del servidor.

Ejemplos de configuraciones que se pueden realizar son la configuración de MPM (Multi-Processing Module), habilitar la compresión del contenido con mod_deflate, eliminar el soporte para .htaccess, eliminar módulos no utilizados, etc.

Otras opciones de servidores web

Apache es el servidor web más utilizado en el mundo, sin embargo en los últimos años otros servidores se han postulado como alternativas, principalmente Nginx.

NGINX y su comparación con Apache

NGINX es otro servidor web muy popular. Como Apache sirve para las comunicaciones por HTTP y puede presentar algunas ventajas. Apache en principio es una alternativa bastante más madura y con mayores capacidades para la configuración, pero donde NGINX puede obtener ventaja es en el rendimiento y en la habilidad de manejar muchas conexiones simultáneas con pocos recursos.

La diferencia fundamental entre ambos servidores es que Apache crea un nuevo proceso o hilo para cada conexión recibida, mientras que NGINX utiliza un modelo basado en eventos, siendo por tanto un servidor asíncrono. Por ello es muy usado en entornos de servidor donde se tiene menos cantidad de recursos o en conjunto con tecnologías asíncronas como NodeJS.

Fernán García de Zúñiga

Productos relacionados: