¿Qué es Apache y para qué sirve?

14min

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.

¿Cómo funciona Apache?

Para entender a fondo qué es Apache y para qué sirve Apache, es fundamental conocer su funcionamiento interno. Este servidor web Apache opera como un intérprete y facilitador entre el navegador de un usuario y el contenido de un sitio web. Su eficiencia y fiabilidad radican en su arquitectura modular y su capacidad para manejar múltiples solicitudes de forma simultánea.

Arquitectura básica del servidor web Apache

La arquitectura básica del servidor web Apache se basa en un diseño modular y procesos concurrentes. Cuando instalas Apache, se configura un proceso principal (o «parent process») que es el encargado de iniciar y gestionar una serie de procesos hijos (o «child processes»). Cada uno de estos procesos hijos está diseñado para manejar las solicitudes entrantes de los clientes.

Existen diferentes «Multi-Processing Modules» (MPMs) que determinan cómo Apache gestiona estos procesos y hilos. Los MPMs más comunes son:

  • Prefork: Crea varios procesos hijos antes de que lleguen las solicitudes. Cada proceso hijo maneja una sola conexión. Es estable y compatible con librerías antiguas, pero consume más recursos.
  • Worker: Utiliza múltiples procesos hijos, cada uno de los cuales puede tener múltiples hilos. Cada hilo maneja una conexión. Esto permite manejar más conexiones con menos memoria que Prefork.
  • Event: Similar a Worker, pero está optimizado para manejar conexiones persistentes (keep-alive) de manera más eficiente, liberando los hilos tan pronto como sea posible para nuevas solicitudes. Es el MPM más moderno y eficiente para Apache.

Esta arquitectura permite que el servidor Apache escale y maneje un gran volumen de tráfico de forma eficiente, distribuyendo la carga entre los procesos y liberándolos una vez que la solicitud ha sido atendida.

Archivos de configuración y módulos principales

El comportamiento del servidor Apache se rige por sus archivos de configuración y módulos principales. El archivo de configuración principal es httpd.conf, donde se definen parámetros globales, rutas, puertos y la carga de módulos. Además, Apache utiliza VirtualHosts para alojar múltiples sitios web en un solo servidor, cada uno con su propia configuración.

Los módulos son el corazón de la extensibilidad de Apache. Son componentes de software que pueden cargarse o descargarse para añadir funcionalidades específicas. Algunos módulos comunes incluyen:

  • mod_rewrite: Para reescritura de URLs, permitiendo URLs amigables.
  • mod_ssl: Para habilitar SSL/TLS y servir contenido HTTPS cifrado.
  • mod_dir: Para controlar el comportamiento de los directorios (ej. index.html).
  • mod_headers: Para manipular las cabeceras HTTP.

Gracias a estos archivos y módulos, el servidor web Apache es extremadamente flexible y puede adaptarse a casi cualquier necesidad de alojamiento web.

Cómo gestiona las solicitudes HTTP

Cuando un usuario escribe una dirección web en su navegador, este envía una solicitud HTTP al servidor Apache donde reside el sitio. Así es cómo gestiona las solicitudes HTTP Apache:

  1. Recepción de la solicitud: El proceso principal de Apache escucha en un puerto específico (por defecto, el 80 para HTTP y el 443 para HTTPS) y recibe la solicitud.
  2. Asignación a un proceso/hilo: La solicitud se pasa a uno de los procesos hijos o hilos disponibles (según el MPM configurado).
  3. Procesamiento: El proceso/hilo lee la solicitud, identifica el archivo o recurso solicitado (por ejemplo, una página HTML, una imagen, un script PHP).
  4. Ejecución de scripts (si aplica): Si la solicitud es para un script dinámico (como PHP, Python), Apache lo envía al intérprete correspondiente (a través de módulos como mod_php o mod_wsgi) para que sea procesado.
  5. Recuperación de recursos: Si es un archivo estático, Apache lo recupera directamente del sistema de archivos.
  6. Envío de la respuesta: Una vez que el recurso está listo, Apache lo empaqueta en una respuesta HTTP y la envía de vuelta al navegador del usuario, que la renderiza en pantalla.

Este flujo de trabajo es la esencia de qué es Apache en acción, sirviendo contenido web a millones de usuarios en todo el mundo.

Compatibilidad con sistemas operativos

La compatibilidad con sistemas operativos es una de las grandes fortalezas de Apache. Es un servidor web multiplataforma por excelencia, lo que significa que puede ejecutarse en una amplia variedad de entornos. Principalmente, se utiliza en:

  • Linux: Es su entorno nativo y donde se despliega con mayor frecuencia. Distribuciones como Ubuntu, CentOS, Debian o Red Hat suelen incluir Apache en sus repositorios y ofrecen un rendimiento y estabilidad excelentes.
  • Windows: Apache también es totalmente compatible con Windows, aunque su uso es menos común en entornos de producción en comparación con IIS (Internet Information Services) de Microsoft. Es popular para el desarrollo local (por ejemplo, con WAMP).
  • macOS: Apache viene preinstalado en muchas versiones de macOS, lo que lo hace conveniente para desarrolladores que trabajan en este sistema operativo (por ejemplo, con MAMP).
  • Otros sistemas: También puede funcionar en otras plataformas similares a Unix, como FreeBSD y Solaris.

Esta amplia compatibilidad es una de las razones por las que el servidor Apache ha mantenido su posición dominante durante décadas, ya que se adapta a casi cualquier infraestructura existente.

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.

Integración con bases de datos y CMS (WordPress, Joomla, etc.)

La mayoría de los sistemas de gestión de contenido populares, como WordPress, Joomla, Drupal o Magento, dependen de un servidor web como Apache para funcionar. Apache trabaja en conjunto con bases de datos (como MySQL o PostgreSQL) y lenguajes de scripting (principalmente PHP) para construir y servir estas plataformas dinámicas. Es la combinación de Apache, MySQL (o MariaDB) y PHP (el popular stack LAMP) lo que ha impulsado gran parte de la web moderna.

Uso en entornos empresariales y académicos

El uso en entornos empresariales y académicos es un área donde la fiabilidad y las características de seguridad de Apache son muy valoradas. Empresas de todos los tamaños lo utilizan para alojar intranets, aplicaciones internas, portales de clientes y servicios web. En el ámbito académico, universidades y centros de investigación lo emplean para plataformas de e-learning, repositorios de investigación y servidores de proyectos. Su robustez, flexibilidad y naturaleza de código abierto lo convierten en una opción económica y potente para infraestructuras críticas.

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.

Apache vs NGINX

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.

Apache vs LiteSpeed

La comparativa Apache vs LiteSpeed se centra en el rendimiento, especialmente para sitios web basados en PHP y sistemas de gestión de contenido como WordPress. Apache ya es conocido por su flexibilidad y robustez, LiteSpeed Web Server es un servidor web comercial de alto rendimiento diseñado para ser un reemplazo directo y compatible con Apache. Su arquitectura orientada a eventos lo hace significativamente más rápido que Apache, especialmente para WordPress y otras aplicaciones PHP, gracias a su propio API de PHP y su avanzado mecanismo de caché.

LiteSpeed es una alternativa de pago que ofrece un rendimiento superior a Apache, especialmente para hosting compartido y sitios web dinámicos con alto tráfico. Si bien el servidor Apache es gratuito y muy capaz, LiteSpeed es una inversión que puede justificar su coste para aquellos que buscan maximizar la velocidad y la eficiencia de sus sitios web basados en PHP.

Conclusiones sobre el servidor Apache

El servidor web Apache ha sido y sigue siendo un pilar fundamental de internet. Su arquitectura modular, robustez y amplia compatibilidad con sistemas operativos lo convierten en una opción versátil y fiable para una infinidad de casos de uso de Apache, desde el hosting y alojamiento de sitios web sencillos hasta la compleja implementación de aplicaciones web y la integración con bases de datos y CMS como WordPress.

Aunque han surgido otras opciones de servidores web como Nginx y LiteSpeed con ventajas específicas en rendimiento, la flexibilidad, la madurez y la gran comunidad de Apache aseguran su relevancia. Comprender qué es Apache y para qué sirve Apache es esencial para cualquier profesional digital, ya que sus principios y su legado continúan siendo la base de gran parte de la infraestructura web actual.

Fernán García de Zúñiga

Productos relacionados: