Exponiendo aplicaciones de Docker con Nginx
21 feb 2024
Escrito por: Cristina Rancaño
En este post queremos compartir algunos ejemplos básicos de cómo utilizar Nginx para exponer aplicaciones que están corriendo en Docker.
Para empezar, damos un repaso rápido a los servicios que vamos a ver:
Nginx: es un servidor web de código abierto que también es usado como proxy inverso, cache de HTTP, y balanceador de carga.
Docker: es una herramienta de código abierto que permite a los desarrolladores crear, desplegar, ejecutar y gestionar contenedores.
Requisitos necesarios
Un servidor Linux (En el ejemplo utilizaremos uno basado en Debian)
Tener Nginx instalado:
apt update && apt install nginx
Tener Docker instalado: docu.
Nginx con Docker
Esta es la infraestructura que montaremos:
2 aplicaciones que corren en docker:
App1 - que expone el puerto 1234
App2 - que expone el puerto 1235
Un servidor Nginx donde tendremos los siguientes dominios:
app1.test.com
app2.test.com
Para poder comprender esto, primero hay que ver lo siguiente:
Gracias a los Vhosts de Nginx estamos redirigiendo el tráfico y las solicitudes hacia nuestros contenedores.
Cada Vhost tiene su propia configuración, generalmente la encontramos en:
/etc/nginx/sites-available
→ son los vhosts disponibles en nuestro servidor./etc/nginx/sites-enabled
→ son los vhosts activos, suelen ser enlaces simbólicos al directorio anterior.
En este ejemplo vamos a ver una configuración básica para cada uno de los Vhosts. Por ejemplo vamos a configurar el listener, el hostname y el proxy correspondiente. Ejemplo:
Vhost para App1
Vhost para App2
Posibles errores
Conflicto entre puertos: Hay que tener en cuenta, que cada contenedor debe tener un puerto diferente del host.
Los puertos de las aplicaciones deben ser diferentes al del servidor web Nginx.
Nginx con Docker y servicios del sistema
Aparte de configurar Vhosts que deriven en contenedores, también podemos derivar tráfico a servicios que corran sobre el propio sistema.
Vhost para App3
Resumen
En este post tenemos diferentes ejemplos básicos de cómo con Nginx podemos derivar tráfico a contenedores y también a servicios que corren dentro de nuestro servidor. Esperamos que os haya sido útil.
¡Muchas gracias por leer!