TechStore es una tienda online de productos tecnológicos que necesita dos entornos: desarrollo (para pruebas del equipo) y producción (acceso público). El objetivo es configurar Nginx en máquinas virtuales para enrutar tráfico según parámetros y virtual hosts, simulando infraestructura empresarial.
En esta práctica nginx actuará como intermediario inteligente entre los clientes (navegadores) y los servidores backend (VM2). Recibe todas las peticiones HTTP en el puerto 80 y decide a qué backend reenviarlas según reglas configuradas.
Los clientes solo conocerán la IP del gateway (MV2 - 10.0.0.10)
Nginx reenviará peticiones a backends internos.
Oculta la arquitectura real y protege servidores backend
Cliente (navegador)
↓ Solicita: techstore.local/?env=dev
[VM1 Nginx - Proxy Inverso]
↓ Analiza parámetro ?env=dev
↓ Traduce a: http://192.168.56.11:8080
[VM2 Backend - Puerto 8080]
↓ Responde con HTML desarrollo
[VM1 Nginx]
↓ Reenvía respuesta al cliente
Cliente ve contenido sin saber origen real
El cliente nunca accede directamente a VM2, siempre pasa por el proxy Nginx en VM1, que además añade headers como X-Real-IP y X-Forwarded-For para que los backends sepan la IP original del cliente.
Paso 1: Crear VMs en VirtualBox
Crea VM1 - Nginx Gateway:
Red NAT con IP estática: 10.0.0.10/24
Crea VM2 - Backend Servers:
Red NAT con IP estática: 10.0.0.11/24
Para configurar las IP estáticas recuerda editar /etc/netplan/*.yaml
Aplicar: sudo netplan apply
Verifica conectividad con ping desde VM1 y viceversa.
Paso 2: Configuración Backend (VM2)
2.1 Instalar Nginx y Node.js
En esta máquina configuraremos dos webs diferentes con dos sites diferentes. Un site sera el de "development" y el otro sera de "production". Adicionalmente le añadiremos un panel de administración por lo que repetiremos el mismo proceso tres veces:
2.2 Crear Aplicación TechStore - Entorno Desarrollo
Contenido de la web (Entorno dev):
2.3 Crear Aplicación TechStore - Entorno Producción
Contenido de la web (Entorno Prod):
2.4 Crear Panel de Administración
Contenido HTML (Admin):
2.5 Configurar Nginx en VM2 (Puertos Múltiples)
Crearemos un server (virtualhost) en nginx de los tres backends cada uno en un puerto diferente:
Cuya configuración será la siguiente:
Nota que lo único que cambia es el puerto y la carpeta donde se encuentra el contenido a desplegar. En esta configuración no ponemos nada de dominios ni URL solamente funcionaremos por puerto (de ahí el tema de gateway nginx).
En esta máquina lo que configuraremos será el proxy que reenviará las peticiones al backend según parámetros. Los primeros pasos serán los mismos en ambas máquinas:
3.1 Instalar Nginx
3.2 Crear Página de Bienvenida Principal
Contenido:
Nota como podremos pasar de una a otro con los botones tan solo cambiando el parámetro de "/?env=prod" del navegador gracias al protocolo HTTP.
3.3 Configuración Maestro Nginx con Routing Inteligente
Para esto simplemente crearemos otro server (virtualhost) en esta máquina
Con la siguiente configuración completa:
Activar:
Parte 4: Verificación
4.1 Editar Hosts en Linux/Mac
Para la verificación podemos usar una máquina virtual ubuntu desktop con mozilla para hacer las verificaciones por dominio. Esta máquina debe estar conectada dentro la misma red NAT.
Primero para evitarnos temas de DNS vamos a ir a lo sencillo y vamos a editar el archivo hosts:
Añadir:
Ahora desde un navegador en host y deberias comprobar:
URL
Resultado Esperado
Verificación
http://techstore.local/
Página bienvenida con botones
Fondo gris, 2 botones visibles
http://techstore.local/?env=prod
TechStore PRODUCCIÓN (verde)
Precios €1499/€89, botones compra
http://techstore.local/?env=dev
TechStore DESARROLLO (morado)
Badge "DESARROLLO", precios test
http://admin.techstore.local/
Panel admin terminal negro
Tabla métricas, fondo negro/verde
4.3 Pruebas con cURL
En caso que no dispongas suficiente RAM puedes hacer las verificaciones desde la propia maquina VM1 o host con los siguientes comandos: