Proxy inverso con NGINX sobre Docker

Bueno, Basicamente docker es una nueva manera de virtualizar servicios, web o bases de datos.

Varios Web Server con Docker

La cosa es que vamos a implementar en este ejemplo un proxy NGINX para que los servicios web que colguemos los pongamos dentro del puerto 80, aunque sean varias maquinas virtuales.

Como tal van a ser, multiples web servers dentro de un solo servidor y un solo puerto.


Sin Nginx Con Nginx
Container 1 IP1:1880 IP:80/container1
Container 2 IP2:1880 IP:80/container2
Container 3 IP3:1880 IP:80/container3


Instalando NGINX

Gracias a la magia Docker, corremos el comando para instalarlo exponiendo el puerto 80 atraves de la ip del host y lo nombramos como NGINX-STXN con el siguiente comando:

docker run --name NGINX-STXN -d -p 80:80 nginx


Descargara la imagen de Docker Hub y luego creara el contenedor NGINX-STXN, lo comprobamos revisando los contenedores activos con el comando:

docker ps

 y aparece corriendo el contenedor por arte de magia y lo comprobamos abriendo desde el navegador


Configurando URLS

La configuracion debe ser como cualquier otro NGINX. Te preguntas como? pues Google-it... yo me ayude de ejemplos para configurar el primero.

Para configurar esto deberemos modificar el archivo de configuracion. Esta ubicado en la siguiente ruta:
/etc/nginx/config.d/default.conf
Primero lo obtenemos usando el archivo original con:

docker cp NGINX-STXN:/etc/nginx/conf.d/default.conf default.conf

lo podemos modificar en el servidor y luego usar el comando cp en el host docker, despues reiniciar el contenedor, los comandos seran similares a lo siguiente:

docker cp default.conf NGINX-STXN:/etc/nginx/conf.d/default.conf 
esto copiara el archivo desde el servidor docker al container, solo falta reiniciarlo para ver los cambios reflejados. Super facil con:

docker restart NGINX-STXN 

Personalizando HTMLs


Para personalizar el Welcome por ejemplo deberemos cargar los archivos HTML en la ruta:

/usr/share/nginx/html
Igualmente podemos cargar los archivos con el comando CP, sera como el siguiente comando:

docker cp index.html NGINX-STXN:/usr/share/nginx/html/index.html