Ir al contenido principal
BlogVisión general de la nubeFundamentos del servidor web

Fundamentos del servidor web

Fundamentos_del_servidor_Web

Este artículo forma parte de nuestra serie Fundamentos del Cloud Computing. Amplía tus conocimientos con nuestro curso de certificación Introducción al Cloud Computing.

Puede que ya esté familiarizado con este concepto. ¿Recuerda el modelo cliente/servidor? Los servidores web son sólo un componente de este modelo: el servidor. 

En un nivel básico, un servidor web almacena y distribuye sitios y aplicaciones web. Los servidores web se componen de hardware y software que trabajan juntos para facilitar el intercambio de datos. 

El componente de hardware de un servidor web se refiere al ordenador físico o virtual que almacena los archivos y componentes del sitio web. Esto incluye desde documentos HTML estáticos, archivos de texto, imágenes y vídeos hasta scripts dinámicos más complejos. Por ejemplo, si visita un sitio web con un vídeo en su página de inicio, ese vídeo se almacena en el hardware del servidor web.

El componente de software de un servidor web es responsable de controlar cómo los usuarios pueden acceder a los archivos almacenados en el servidor. Para ello, gestiona las peticiones que llegan desde los navegadores web y otros dispositivos conectados a Internet. El software instalado en el servidor web permite ver los sitios web en el navegador.

Empecemos por profundizar en los componentes que hacen funcionar a los servidores web.

Protocolo de transferencia de hipertexto (HTTP)

HTTP permite a los servidores web entregar sitios y aplicaciones web a los usuarios, para que puedan acceder y ver contenidos en Internet.

Cuando usted utiliza un navegador web para acceder a un sitio web, su navegador envía una petición al servidor web que aloja ese sitio web. Esta petición se realiza en forma de mensaje HTTP. El servidor web recibe y procesa la petición, recuperando el recurso solicitado de sus componentes de hardware y software.

A la derecha de la imagen anterior, podemos ver que el servidor web envía un mensaje a un navegador web utilizando HTTP. Para solicitar un sitio web, basta con escribir su URL en la barra de direcciones del navegador. A continuación, el navegador asigna esta URL a una dirección IP, que representa la ubicación física del servidor donde está almacenado el sitio web. Si el servidor se encuentra en esta dirección IP, el software del servidor web recibirá la petición y nos devolverá el sitio web solicitado. Así, si escribimos "www.example.com" en el navegador, el servidor web nos devolverá el sitio web correspondiente a "www.example.com".

Autoalojamiento frente a proveedor de alojamiento

A la hora de alojar su aplicación web, puede elegir entre recurrir a un proveedor de alojamiento o configurar su propio servidor en el ordenador de su casa. Los particulares suelen autoalojarse, pero para las organizaciones que prestan servicios esenciales, un proveedor de alojamiento ofrece mucha más protección.

Con un proveedor de alojamiento, puede beneficiarse de servidores y redes de alta velocidad. Un proveedor de alojamiento también tiene la capacidad de gestionar de forma fiable el consumo fluctuante de energía y proteger de posibles fallos. Pero la razón principal por la que utilizamos proveedores de alojamiento para servicios esenciales es garantizar que la información privada no se filtre al dominio público. 

Software de servidor web

El software de servidor web es el corazón de cualquier sitio o aplicación web. Nos permite servir contenidos web a los usuarios a través de Internet. Cuando creamos un sitio web y configuramos nuestros servidores, necesitamos software para hacerlo funcionar.

En términos de software, dos soluciones dominan el mercado: Apache y NGINX. Aquí hablaremos de estas dos, pero cabe señalar que existen otras opciones, como IIS y Lighttpd, cada una de ellas con sus propias ventajas y dificultades.

Apache

Apache es un software de servidor web ampliamente utilizado, ideal para alojar contenidos dinámicos, como sitios de comercio electrónico o foros. Puede funcionar en múltiples plataformas, como Windows, macOS y Linux. Existe desde 1995 y es uno de los servidores web más antiguos y utilizados. 

Apache es capaz de manejar una variedad de protocolos web, incluyendo HTTP, HTTPS y FTP, y puede ejecutarse en muchos sistemas operativos diferentes, incluyendo Windows, Linux y macOS. Es altamente personalizable, con varios módulos que pueden añadir funcionalidad adicional como soporte para contenido dinámico, autenticación y almacenamiento en caché. Se creó específicamente para procesar contenidos dinámicos dentro del propio servidor, independientemente de cualquier componente del servidor. 

Apache tiene un modelo de una conexión por proceso. Un modelo de una conexión por proceso es un enfoque tradicional para construir servidores web donde cada conexión de cliente es manejada por un proceso o hilo separado. Este proceso, o hilo, es responsable de gestionar la conexión del cliente y procesar sus peticiones hasta que se cierra la conexión. Dado que Apache utiliza este modelo, el rendimiento del servidor se degrada significativamente cuando el número de solicitudes de conexión concurrentes supera el número de procesos.

Una de las principales características de Apache es su capacidad para admitir varios hosts virtuales en un único servidor, lo que permite a los sitios web compartir recursos manteniendo sus configuraciones únicas. Apache también es muy extensible, con una gran comunidad de desarrolladores que crean y mantienen módulos y plugins adicionales para ampliar su funcionalidad.

NGINX

Por otro lado, NGINX (pronunciado Engine X) está optimizado para servir contenidos estáticos, como imágenes y vídeos, y es popular por su capacidad para manejar un gran número de conexiones simultáneas de clientes. NGINX es muy valorado por su capacidad para mejorar la entrega de contenidos a través de la web. 

NGINX se construyó usando un modelo asíncrono, dirigido por eventos. Repasemos estos conceptos por un momento. 

Utilizamos modelos asíncronos cuando un sistema necesita gestionar muchas peticiones simultáneas, como en los servidores web, la comunicación en red y la gestión de bases de datos. Al utilizar un modelo de programación asíncrono, estos sistemas pueden lograr un mejor rendimiento y escalabilidad y reducir el riesgo de bloqueo y congelación.

Un modelo basado en eventos se rige por los eventos del sistema en lugar de seguir una secuencia predeterminada de pasos.

Por lo tanto, tener un modelo asíncrono y basado en eventos permite a un sistema manejar múltiples tareas y eventos juntos sin bloquear el procesamiento de otras tareas.

Debido a su arquitectura, NGINX no puede procesar contenido dinámico, como PHP. Debe pasarlo a un procesador externo para su ejecución. Por este motivo, NGINX es más adecuado para contenido estático, proxy inverso, equilibrio de carga, proxy de correo y caché HTTP. NGINX también se recomienda para sistemas Linux.

Utilización conjunta de NGINX y Apache

NGINX y Apache suelen utilizarse juntos. De este modo, podemos aprovechar los puntos fuertes de cada servidor y superar sus limitaciones.

Uno de los métodos más comunes de integrar Apache y NGINX es colocar NGINX delante de Apache para gestionar todas las peticiones HTTP entrantes, como se ve en la imagen anterior. Esta configuración implica dirigir todas las peticiones HTTP entrantes a NGINX, que luego retransmite las peticiones de contenido dinámico a Apache mientras sirve las peticiones de contenido estático por sí mismo.

Al colocar NGINX delante de Apache, aprovechamos la capacidad de NGINXpara gestionar grandes volúmenes de solicitudes de conexión simultáneas con su modelo asíncrono basado en eventos. Esto ayuda a aliviar parte de la tensión de Apache al reducir el número de hilos y procesos abiertos necesarios para gestionar las solicitudes, que de otro modo podrían degradar el rendimiento de Apache.

La configuración de proxy inverso también ofrece ventajas adicionales, como el equilibrio de la carga y la mejora de la seguridad. NGINX puede distribuir las peticiones entre varios servidores Apache , equilibrando la carga y evitando que un solo servidor se vea desbordado. Además, NGINX puede actuar como amortiguador entre Internet y el servidor web, proporcionando una capa adicional de protección contra ataques.

Adquiera las habilidades necesarias para tener éxito en la computación en nube realizando nuestro curso de certificación Introducción a la computación en nube.


Comentarios

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.