LINUX

Cómo descargar archivos usando Https desde Nginx Docker Containers

Como administradores de sistemas, tenemos situaciones en las que necesitamos descargar archivos grandes, como archivos de respaldo, copias de seguridad de bases de datos, correos electrónicos, archivos de registro, etc. de forma segura entre nuestros servidores. Por lo general, usamos SFTP, SSH o SCP para estos fines. Pero estos procesos se ralentizan comparativamente cuando se trata de una descarga de copia de seguridad remota.

En este artículo, estoy explicando una forma conveniente de descargar archivos grandes usando HTTP con la ayuda de un contenedor Nginx Docker en un servidor Ubuntu 16.04.

Prerrequisitos

  • Docker instaló el servidor Ubuntu 16.04
  • Requerir un nombre de host FQDN
  • Certificado SSL para su nombre de host

Creando certificado SSL para el nombre de host

En primer lugar, obtengamos nuestro certificado SSL para nuestro nombre de host. Estoy usando Let’s Encrypt para obtener mi certificado SSL gratuito. Podemos instalar Let’s Encrypt usando el repositorio de GitHub.

Instalar Git y bc

Dos de estos paquetes deben instalarse antes de la instalación de Let’s Encrypt. Bc es una “calculadora de lenguaje de precisión arbitraria. Se utiliza para el script de renovación automática en el software Let’s Encrypt. Puede instalar estos paquetes con estos comandos a continuación:

root@www:~# apt-get update

root@www:~# apt-get -y install git bc

Una vez hecho esto, podemos descargar fácilmente vamos a cifrar clonando el repositorio de GitHub.

Clonación Let’s Encrypt Repository

Podemos usar este comando para clonar el repositorio Let’s Encrypt en la carpeta / opt.

root@www:~# git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
Cloning into '/opt/letsencrypt'...
remote: Counting objects: 39435, done.
remote: Total 39435 (delta 0), reused 0 (delta 0), pack-reused 39435
Receiving objects: 100% (39435/39435), 10.63 MiB | 20.39 MiB/s, done.
Resolving deltas: 100% (28067/28067), done.
Checking connectivity... done.

Al clonar, tendremos una copia del repositorio vamos a cifrar en el directorio / opt / letsencrypt.

Emisión de certificado SSL

Let’s Encrypt proporciona numerosas formas de obtener certificados SSL, a través de varios complementos. Estamos usando el complemento Webroot para inicializar nuestro proceso de certificado. Se llama como un complemento de autenticación. Funciona colocando un archivo especial en el /.bien conocido directorio dentro de la raíz del documento, que el servicio Let’s Encrypt puede abrir a través de su servidor web para su validación. Veamos cómo podemos usar el complemento Webroot para obtener un certificado SSL.

Si no ha instalado un servidor web, puede instalar Nginx en su host de docker con el comando apt-get install nginx.

Ahora agregue la siguiente sección a su bloque de servidor SSL en su configuración predeterminada de vhost / etc / nginx / sites-available / default para permitir el acceso a la .bien conocido directorio para validación.

location ~ /.well-known {
allow all;
}

Esta carpeta se creará bajo la raíz del documento del dominio durante la emisión del certificado SSL por Let’s Encrypt. Ahora guarde el archivo y vuelva a cargar la configuración de Nginx.

Ahora podemos usar el complemento Webroot para solicitar nuestro certificado SSL con estos comandos. Puede especificar nuestros nombres de dominio con estos comandos con el -d opción. Para usar un solo certificado para múltiples dominios, podemos incluirlos todos a la vez usando las opciones -d como se muestra a continuación:

root@www:~# cd /opt/letsencrypt
root@www:/opt/letsencrypt# ./letsencrypt-auto certonly -a webroot --webroot-path=/var/www/html -d nodenixbox.com -d www.nodenixbox.com

Necesitamos movernos a la carpeta de repositorio de letsencrypt en / opt y ejecutar este comando desde allí. Este comando continúa con la instalación de los paquetes de Python requeridos y solicita ingresar la dirección de correo electrónico que se utilizará para avisos urgentes y recuperación de claves perdidas.

letsem1

Ingrese su dirección de correo electrónico válida y pase a la siguiente pantalla para aceptar los términos y condiciones de este software.

vamos a cifrar

Después de aceptar este Acuerdo de suscripción, la instalación se completará correctamente y le proporcionará los detalles del Certificado.

certdetails

Puede ver los detalles del certificado y la fecha de vencimiento de nuestro certificado de dominio desde aquí.

Su certificado y cadena se han guardado en

/etc/letsencrypt/live/nodenixbox.com/fullchain.pem.

Tu certificado lo hará
expirará el 2016-11-05.

Puede editar su configuración Nginx predeterminada para incluir estos detalles de certificado para habilitar SSL y volver a cargar la configuración para actualizar estos cambios.

server {
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;

server_name nodenixbox.com www.nodenixbox.com;
root /var/www/html/;
ssl_certificate /etc/letsencrypt/live/nodenixbox.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nodenixbox.com/privkey.pem;

Puede verificar su instalación de SSL en la URL >>https://www.sslshopper.com/ssl-checker.html

Comprobador de SSL - Verificación de certificado SSL 2016-08-08 14-18-27

Definición de ruta para descargas

Necesitamos agregar las siguientes entradas a nuestra configuración de Nginx Vhost bajo el bloque del servidor SSL para servir nuestros archivos cuando se realiza una solicitud en / descargas / url.

location /downloads/ {
alias /files/;
}

Creación de un contenedor Nginx Docker

Creemos nuestro contenedor de la ventana acoplable Nginx con la configuración segura de Nginx desde nuestro host acoplable junto con la instalación y los certificados encriptados. En primer lugar, cree un archivo docker-compose.yml. Este archivo le dice a Docker cómo ejecutar un contenedor específico.

redactar
files : This folder contains the files which needs to be downloaded
conf : This folder contains  our saved secured Nginx configuration
/etc/letsencrypt & /opt/letsencrypt contains our certificate details and letsencrypt scripts.
/var/www/ : contains our domain document roots.

PD: Podemos excluir los volúmenes que no prefieren copiar según nuestra conveniencia.

Además, expone los puertos 80 y 443 del contenedor de la ventana acoplable al puerto 8081 y 8080 del host, respectivamente.

El archivo anterior le dice a Docker que ejecute un contenedor usando nginx: latest image, monte los archivos de directorios y conf desde la máquina host, y exponga los puertos como se mencionó.

Ahora podemos ejecutar este comando para componer nuestro contenedor de ventana acoplable.

root@www:~# docker-compose up
Recreating root_nginx_1
Attaching to root_nginx_1

Esto creará un contenedor docker como lo hemos compuesto y lo hará funcionar. Podemos ver el estado de nuestro contenedor Docker a continuación:

root@www:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a710ab1cdaa9 nginx:latest "nginx -g 'daemon off" About an hour ago Up About an hour 0.0.0.0:8081->80/tcp, 0.0.0.0:8080->443/tcp root_nginx_1

Podemos verificar la instalación segura de Nginx para su contenedor docker llamando a esta URL >> https://nodenix.com:8080 o en el verificador SSL.

Comprobador de SSL - SSL

Descarga de archivos de forma segura

Como hemos compuesto, los archivos que necesitamos descargar residen dentro de la carpeta / archivos en nuestro contenedor de la ventana acoplable.

root@www:~# docker exec -i -t a710ab1cdaa9 /bin/bash

root@a710ab1cdaa9:/files# ls -l
total 8
-rw-r--r-- 1 root root 172 Aug 8 07:39 log.tar.gz
-rw-r--r-- 1 root root 110 Aug 8 07:32 mails.tar.gz

Ahora podemos descargarlo fácilmente de forma segura utilizando nuestra ventana acoplable Nginx desde esta URL >>> https://nodenixbox.com:8080/downloads/mails.tar.gz

descargando alquitrán

Eso es :). En consecuencia, podemos descargar archivos grandes de los servidores según sus necesidades de forma más fácil y segura. Espero que este artículo sea informativo y útil para ti. Recomendaría sus valiosos comentarios y sugerencias al respecto. ¡Que tenga un lindo día!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar