3. Servidores web y servidores de aplicaciones
Cuando accedemos a una aplicación web, el navegador envía peticiones HTTP a uno o varios servicios que se ejecutan en máquinas conectadas a la red. Esos servicios se encargan de recibir las peticiones, localizar o generar la información solicitada y devolver una respuesta.
En este apartado vamos a diferenciar dos conceptos que utilizaremos durante toda la unidad:
- Servidor web.
- Servidor de aplicaciones o contenedor web.
Aunque ambos pueden participar en la atención de peticiones HTTP, no tienen exactamente la misma función.
La palabra servidor puede referirse tanto a la máquina que ofrece un servicio como al programa que se ejecuta en ella.
Por ejemplo, podemos llamar servidor al equipo Linux que utilizaremos en las prácticas y también al software Apache HTTP Server que instalaremos en ese equipo.
3.1. Qué es un servidor
Un servidor es un sistema que ofrece uno o varios servicios a otros equipos o programas, denominados clientes.
Según el servicio que proporcione podemos hablar, por ejemplo, de:
- Servidor web.
- Servidor de bases de datos.
- Servidor de archivos.
- Servidor de correo.
- Servidor de aplicaciones.
Un mismo equipo puede ejecutar varios servicios al mismo tiempo. Por ejemplo, una máquina Linux podría ejecutar un servidor web y, además, un sistema gestor de bases de datos.
Capacidad de un servidor
La capacidad necesaria depende del tipo de aplicación, del número de usuarios y de la carga de trabajo que tenga que soportar.
Los principales recursos que debemos tener en cuenta son:
- Procesador (CPU). Ejecuta las instrucciones necesarias para atender las peticiones y realizar el procesamiento.
- Memoria RAM. Mantiene temporalmente los programas y datos que están siendo utilizados.
- Almacenamiento. Guarda el sistema operativo, las aplicaciones, la configuración, los registros y los datos persistentes.
- Red. Permite intercambiar información con los clientes y con otros sistemas.

En esta unidad nos basta con identificar estos recursos. Más adelante veremos cómo la infraestructura puede ampliarse o distribuirse cuando aumenta la carga.
3.2. Servidor web
Un servidor web es un programa que permanece a la espera de peticiones de los clientes y responde utilizando protocolos web como HTTP o HTTPS.
Cuando un navegador solicita un recurso, el servidor web puede localizarlo y devolverlo al cliente.
Entre los recursos que puede servir encontramos:
- Documentos HTML.
- Hojas de estilo CSS.
- Archivos JavaScript.
- Imágenes.
- Vídeos.
- Documentos y otros archivos descargables.
Cuando estos archivos ya existen en el servidor y se entregan sin tener que generar su contenido específicamente para cada petición, hablamos de contenido estático.
Contenido estático y contenido dinámico
No todas las respuestas tienen que corresponder a un archivo almacenado previamente.
El contenido dinámico se genera como resultado de ejecutar lógica en el servidor. El resultado puede depender, por ejemplo, del usuario, de los datos almacenados o de los parámetros recibidos en la petición.
| Contenido estático | Contenido dinámico |
|---|---|
| El recurso ya existe y se entrega al cliente. | El contenido se genera al procesar la petición. |
| Suele ser igual para todos los usuarios. | Puede variar según el usuario o los datos. |
| Ejemplos: imagen, CSS, documento HTML fijo. | Ejemplos: carrito de compra, área privada, consulta de reservas. |
La imagen del logotipo de una tienda puede ser un recurso estático.
La página que muestra el contenido del carrito de compra es dinámica, porque su contenido depende de los productos seleccionados por cada usuario.
Apache HTTP Server
Durante la unidad trabajaremos con Apache HTTP Server, un servidor web libre y de código abierto.
Apache tiene una arquitectura modular. Parte de su funcionalidad se encuentra en el núcleo del servidor y otras funciones pueden incorporarse mediante módulos.
Entre esos módulos existen los denominados MPM (Multi-Processing Modules), responsables de aspectos fundamentales relacionados con la forma en que Apache acepta y procesa conexiones.
No necesitamos estudiar todavía su configuración interna. Lo importante en este momento es comprender que Apache puede ampliar o adaptar su comportamiento mediante módulos.
En materiales antiguos puede aparecer la idea de que un servidor web sirve únicamente páginas estáticas. Es una simplificación útil para distinguir conceptos, pero no es una frontera absoluta.
Un servidor web como Apache puede participar también en aplicaciones dinámicas mediante módulos, integración con otros procesos o actuando como intermediario hacia otro servicio.
La diferencia importante está en qué componente se encarga de ejecutar la lógica de la aplicación.
3.3. Servidor de aplicaciones y contenedor web
Una aplicación web dinámica necesita algo más que entregar archivos: debe poder ejecutar código, aplicar reglas de negocio, acceder a datos y generar respuestas.
Un servidor de aplicaciones proporciona un entorno de ejecución y servicios para las aplicaciones que aloja.
Dependiendo de la plataforma puede encargarse, entre otras funciones, de:
- Ejecutar la lógica de las aplicaciones.
- Gestionar componentes de la aplicación.
- Facilitar el acceso a datos y otros servicios.
- Gestionar aspectos relacionados con sesiones, seguridad o recursos compartidos.
- Atender peticiones de los clientes y generar respuestas dinámicas.
La lógica queda centralizada en el servidor. Esto permite que distintos clientes utilicen la misma aplicación sin tener que instalar en cada uno toda su lógica de negocio.
Tomcat: servidor web y contenedor de aplicaciones Java
En esta unidad utilizaremos Apache Tomcat.
Tomcat puede recibir peticiones HTTP y servir recursos estáticos, pero su función característica es proporcionar un contenedor de Servlets y Jakarta Server Pages (JSP) para ejecutar aplicaciones web Java.
Un Servlet es un componente Java que se ejecuta dentro de un contenedor y puede recibir y responder peticiones, normalmente HTTP.
Las Jakarta Server Pages (JSP) permiten generar contenido web dinámico a partir de páginas que son procesadas en el servidor.
En documentación antigua encontraremos los nombres Java EE, J2EE, javax.servlet y JavaServer Pages.
La plataforma evolucionó y actualmente se denomina Jakarta EE. Las APIs modernas utilizan el espacio de nombres jakarta.*.
Tomcat implementa las especificaciones web necesarias para aplicaciones basadas, entre otras tecnologías, en Jakarta Servlet y Jakarta Pages. No implementa toda la plataforma Jakarta EE, por lo que es más preciso describirlo como servidor web y contenedor de Servlets/JSP que como un servidor completo de Jakarta EE.
3.4. Apache y Tomcat: funciones diferentes
Apache HTTP Server y Tomcat pueden responder peticiones web, pero se utilizan con objetivos diferentes.
| Apache HTTP Server | Apache Tomcat | |
|---|---|---|
| Función característica | Servidor web HTTP. | Servidor web y contenedor para aplicaciones Java. |
| Recursos estáticos | Sí. | Sí. |
| Aplicaciones Java basadas en Servlet/JSP | No directamente. | Sí. |
| Arquitectura modular | Sí. | Dispone de una arquitectura específica de contenedor y componentes Java. |
| Uso que haremos en la unidad | Servir contenido y administrar un servidor web. | Ejecutar y administrar aplicaciones web Java. |
Apache HTTP Server y Apache Tomcat pertenecen al ecosistema de Apache, pero no son el mismo producto ni cumplen exactamente la misma función.
Además, cuando en estos apuntes escribamos simplemente Apache, nos estaremos refiriendo a Apache HTTP Server.
Cómo pueden trabajar juntos
En una arquitectura real podemos utilizar únicamente un servidor web, únicamente Tomcat o combinar varios componentes.
Una configuración habitual consiste en colocar un servidor web o un proxy inverso delante de uno o varios servicios de aplicación.
De forma simplificada:
navegador → servidor web / proxy → aplicación → datos
El componente situado delante puede recibir las peticiones y reenviar aquellas que necesitan procesamiento al servicio correspondiente.

Antes de continuar, comprueba que puedes responder estas preguntas:
- ¿Qué diferencia existe entre la máquina servidor y el software servidor?
- ¿Qué factores pueden limitar la capacidad de un servidor?
- ¿Qué diferencia hay entre contenido estático y dinámico?
- ¿Cuál es la función principal de un servidor web?
- ¿Qué aporta un servidor de aplicaciones o un contenedor web?
- ¿Por qué Apache HTTP Server y Tomcat no son equivalentes?
3.5. Para saber más
Si quieres ampliar algunos conceptos de este apartado, puedes consultar:
- Documentación oficial de Apache HTTP Server 2.4.
- Módulos de multiprocesamiento de Apache HTTP Server.
- Documentación oficial de Apache Tomcat.
- Versiones y especificaciones implementadas por Tomcat.
Estos recursos son complementarios y no es necesario estudiarlos en profundidad para seguir la unidad.