Proxy-Inverso-Nginx

Server-Ubuntu

Prologo: (Empezamos este articulo por una descripción del servidor-Proxy, Proxy-reverso y BackEnd. Lo primero es crear Nginx Reverse Proxy con Let’s Encrypt que nos servirá para configurar automáticamente los certificados SSL para todos los sitio-Web que deseamos).

Proxy-Inverso-Nginx

Que es un Proxy “forward proxy”:

  • Un Proxy es un servidor en general se encuentra entre Internet y la red-local, para suprimir accesos no deseados y evitar ataques. El Proxy (forward proxy) se ubica del lado de los clientes

Que es ProxyInversor “reverse proxy”:

  • El servidor Proxy-inverso se situado entre el cliente y el Servidor-Web-VPS, la solicitudes van al Proxy-Inverso y este enviá esta al solicitud al Sitio-Web. El Proxy-Inverso se ubica dentro del VPS y al lado del los sitios-Web que tengamos, para que éste actúe como intermediario de todas las solicitudes web de los clientes.

Que es BackEnd:

  • El concepto BackEnd podemos definir como la parte del desarrollo Web, que se encarga de que toda la lógica del sitio Web, funcione correctamente, representa ese conjunto de procesos que no vemos pero percibimos que todo sea funcional.

 

Que es Let’s Encrypt:

  • Let’s Encrypt-ssl proporciona certificados gratuitos para el cifrado de Seguridad de Capa-Transporte, por medio de un proceso automatizado diseñado para eliminar el complejo proceso actual de creación manual, la validación, firma, instalación y renovación de los certificados de Sitios-Web seguros el objetivo es conseguir conexiones cifradas a World Wide Web, elimina el pago y tareas de renovación del certificado.

Proxy-InversoNginx con Let’s Encrypt-SSL

-. Empezamos con la creación de un Proxy-Inverso-Nginx ¡para conseguirlo! primero con el proceso con docker-Compose es decir con el fichero docker-compose.yml el cual lo creamos con el editor-Nano. Usare dos image jwilder/nginx-proxy y docker-letsencrypt-nginx-proxy-companion procedentes de Github . La primera para generar el Proxy-Reverso y la segunda para generar Let’s Encrypt-SSL

Creamos la arquitectura de carpetas, ficheros:

  • In: root@ubuntu:/# mkdir Docker-compose-Proxy && cd Docker-compose-Proxy
  • In: root@ubuntu:/Docker-compose-Proxy# mkdir Moreluz-Proxy-Inverso && mkdir Moreluz-Web
  • In: root@ubuntu:/Docker-compose-Proxy# ls
  • Out: Moreluz-Proxy-Inverso Moreluz-Web

Nota: En estas dos carpetas, en cada una de ellas “ Moreluz-Proxy-Inverso y Moreluz-Web” crearemos dos ficheros docker-compose.yml con nano. tenemos que tener instalado Docker, Docker-Compase total mente funcional.

Creamos el fichero nano docker-compose.yml:

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# nano docker-compose.yml
  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# ls
  • Out: docker-compose.yml

-. Creamos un servicio basado en la image: jwilder/nginx-proxy, exponemos los puertos 80/tcp/HTTP y 443/tcp/THHPS, estos puertos se reenvían al host, los contenedores de esta maquina el único que tiene salida al exterior “Internet” sea el nginx-proxy. ¡Como se realiza esto! Con el volumen: /var/run/docker.sock esto permite que el nginx-proxy sea sensible a los eventos de Docker el servidor host y modifique automáticamente la configuración del proxy podemos agregar sitios-web al host sin tener que reconfigurar manualmente el nginx-proxy.

-. Continuamos con Let’s Encrypt-ssl que es el complemento de nginx-proxy, nos proporciona los certificado ssl usaremos la image:docker-letsencrypt-nginx-proxy-companion procedentes de Github .

. Este servicio crea una solicitud ssl automáticamente cada nuevo sitio-Web, que conectemos al host, ¡como conseguirlo! Debemos escuchar los eventos de Docker en el host usaremos el volumen:/var/run/docker.sock:/var/run/docker.sock:ro como comparte volumen con nginx-proxy necesitamos la variable de entorno NGINX_PROXY_CONTAINER.

 

Red-Externa

. Necesitamos crear una Red-Externa fuera de Docker-Compose y conectar nuestro contenedor Nginx-Proxy a esta Red-Externa, necesitamos definir esta Red-Externa en docker-compose.yml de esta manera, Docker-Compose asigna los contenedores que crea a esta Red-Externa.

Creamos Red-Externa sin lanzar docker-compose.yml:

  • In: root@ubuntu:/# docker network create nginx-proxy

Creamos el archivo completo docker-compose.yml:

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# nano docker-compose.yml
  1. version: «3.8»
  2. services:
  3.    nginx-proxy:
  4.       image: jwilder/nginx-proxy
  5.       container_name: nginx-proxy
  6.       ports:
  7.          – «80:80»
  8.          – «443:443»
  9.       volumes:
  10.          – /var/run/docker.sock:/tmp/docker.sock:ro
  11.          – letsencrypt-certs:/etc/nginx/certs
  12.          – letsencrypt-vhost-d:/etc/nginx/vhost.d
  13.          – letsencrypt-html:/usr/share/nginx/html
  14.    letsencrypt-proxy:
  15.       image: jrcs/letsencrypt-nginx-proxy-companion
  16.       container_name: letsencrypt-proxy
  17.       volumes:
  18.          – /var/run/docker.sock:/var/run/docker.sock:ro
  19.          – letsencrypt-certs:/etc/nginx/certs
  20.          – letsencrypt-vhost-d:/etc/nginx/vhost.d
  21.          – letsencrypt-html:/usr/share/nginx/html
  22.       environment:
  23.          – DEFAULT_EMAIL=moreluz.lg@gmail.com
  24.          – NGINX_PROXY_CONTAINER=nginx-proxy
  25.    networks:
  26.    default:
  27.       name: nginx-proxy
  28.       external: true
  29.    volumes:
  30.       letsencrypt-certs:
  31.       letsencrypt-vhost-d:
  32.       letsencrypt-html:

Nota: En este archivo docker-compose.yml; Los sercices:nginx-proxy y sercices:letsencrypt-proxy los conectamos a la networks-external-nginx-proxy es la forma que Docker-Compose asigna los contenedores que crea a esta Red-Externa “Red:nginx-proxy.

Lazar el código del proyecto al sevidorVPS “host”:

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# docker-compose up -d

Diagrama del ejemplo expuesto:

Contenedores en ejecución:

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# docker-compose ps

 

Operaciones que podemos necesitar en el trascurso de nuestro proyecto:

Detener la instancia :

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# docker-compose stop

Arrancar de nuevo la instancia :

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# docker-compose up -d

Elimina los contenedores y la red predeterminada, conserva su base de datos:

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# docker-compose down

Elimina los contenedores, la red predeterminada y la base de datos:

  • In: root@ubuntu:/Docker-compose-Proxy/Moreluz-Proxy-Inverso# docker-compose down –volumes

Recopilando:

Tenemos en estos apuntes la configuración del archivo docker-compose.yml, para la creación de una instancia Proxy-InversoNginx con Let’s Encrypt-SSL , con su correspondiente network-externa la cual nos permite colgar a este Proxy-Inverso los contenedores que necesite ¡un ejemplo-wordpress!

  • Referencias : Docker
  • Referencias : Moreluz Environment