Proyecto 1 – Servidor web en AWS con EC2 y VPC

Volver a Proyectos Cloud

Infraestructura mínima en AWS para publicar una página web con Nginx, entendiendo cómo se conectan VPC, subredes, rutas, Internet Gateway y Security Groups.

Servicios: VPC, Subnets, Route Tables, Internet Gateway, EC2, Security Groups, Nginx.

1. Descripción general

En este proyecto he diseñado y desplegado una infraestructura mínima pero realista en AWS para publicar una página web accesible desde Internet.

El objetivo no era solo “levantar una máquina”, sino construir todos los componentes de red necesarios (VPC, subred, tabla de rutas, Internet Gateway, Security Group) y entender cómo interactúan entre sí para que una petición HTTP desde cualquier navegador llegue correctamente hasta mi servidor.


2. Objetivo del proyecto

Con este proyecto demuestro que entiendo los conceptos básicos de networking en cloud, seguridad y despliegue de aplicaciones en AWS.


3. Arquitectura implementada

La arquitectura final se compone de los siguientes elementos.

3.1 Región y zona de disponibilidad

Esto es importante porque las subredes siempre están asociadas a una AZ específica.

3.2 VPC (Virtual Private Cloud)

Este CIDR proporciona un espacio amplio de IPs privadas (65.536 direcciones) que puedo subdividir en varias subredes. La VPC actúa como el “barrio” donde vivirán mis recursos (instancias, bases de datos, etc.), aislado de otras VPC y de la red pública salvo que yo lo permita.

3.3 Subred pública

Esta subred es el “segmento de red” donde coloqué la instancia EC2 que actúa como servidor web y que necesita ser accesible desde Internet.

3.4 Internet Gateway (IGW)

Para permitir que los recursos de mi VPC se comuniquen con Internet, creé y asocié un Internet Gateway a la VPC.

El Internet Gateway es la puerta de entrada y salida entre mi red privada (VPC) y la red pública (Internet). Sin este componente, aunque una instancia tuviera IP pública, no habría una ruta válida hacia Internet.

3.5 Route Table (tabla de rutas)

Configuré una tabla de rutas asociada a la subred pública con:

Esta ruta por defecto indica que todo el tráfico dirigido a direcciones fuera de la red privada debe enviarse al Internet Gateway. Es esta configuración la que convierte a la subred en “pública”.

3.6 Security Group (firewall a nivel de instancia)

Creé un Security Group específico para el servidor web. Es un firewall lógico que se aplica a nivel de instancia.

Reglas de entrada (Inbound):

Reglas de salida (Outbound):

3.7 Instancia EC2 (servidor virtual)

A continuación desplegué una instancia EC2 dentro de la subred pública:

De esta forma dispongo de un servidor Linux en la nube, dentro de mi propia red, con acceso controlado desde Internet.

3.8 Servidor web Nginx y despliegue de página HTML

Una vez creada la instancia, me conecté mediante SSH desde mi equipo a la IP pública de la EC2:

ssh -i clave-mini-proyecto.pem ec2-user@IP_PUBLICA

(Nombre de usuario por defecto para Amazon Linux: ec2-user).

1. Instalación de Nginx:

sudo dnf install nginx -y

2. Habilitar e iniciar el servicio:

sudo systemctl enable nginx
sudo systemctl start nginx

Con esto, Nginx se inicia automáticamente en cada arranque y empieza a escuchar en el puerto 80.

3. Crear página web personalizada:

sudo bash -c 'echo "<h1>Hola AWS - Proyecto 1</h1>" > /usr/share/nginx/html/index.html'

De esta forma, la ruta por defecto (/) de Nginx devuelve una página HTML simple con el mensaje "Hola AWS - Proyecto 1".

4. Verificación desde el navegador:

http://IP_PUBLICA_DE_LA_INSTANCIA

La petición viaja por Internet, entra en mi VPC a través del Internet Gateway, llega a la subred pública, atraviesa el Security Group (que permite el puerto 80) y finalmente Nginx responde con la página HTML.


4. Flujo completo de una petición HTTP

Cuando un usuario abre la IP pública de mi servidor en su navegador:

  1. El navegador envía una petición HTTP a la IP pública de la instancia EC2 en el puerto 80.
  2. El tráfico viaja por Internet hasta la infraestructura de AWS.
  3. En AWS, la petición entra por el Internet Gateway asociado a mi VPC.
  4. La tabla de rutas de la subred pública decide que ese tráfico debe ir a la instancia EC2 que tiene esa IP.
  5. El Security Group comprueba las reglas de entrada y permite el tráfico HTTP en el puerto 80.
  6. El sistema operativo de la instancia entrega la petición al proceso de Nginx.
  7. Nginx responde devolviendo el contenido del archivo index.html.
  8. La respuesta sigue el camino inverso hasta el navegador del usuario, que muestra la página.

5. Buenas prácticas aplicadas y lecciones aprendidas

Con este proyecto he trabajado de forma práctica varios conceptos fundamentales de Cloud:

Este primer proyecto sienta las bases para arquitecturas más complejas: separar subredes públicas y privadas, añadir balanceadores de carga, bases de datos en subred privada, autoescalado, etc.

Volver a Proyectos Cloud