Este repositorio contiene las instrucciones para realizar la implementación de un Reverse Proxy con SSL en Nginx para cada una de las aplicaciones web. Todos los servicios, desde el Reverse Proxy hasta el Certbot para los certificados, son contenedores de Docker.
- Un dominio (para SSL)
- Servidor con
docker
,docker-compose
y dirección IP pública (para SSL) - Configurar 5 subdominos en la zona DNS:
<domain>
,www.<domain>
,php.<domain>
,nodejs.<domain>
ypython.<domain>
.
Primero, necesitamos desplegar los contenedores y probar la redirección con los subdominios sin SSL, simplemente con HTTP por el puerto 80:
git clone https://github.com/marcvspt/revproxy-docker
cd revproxy-docker
Debe sustituir example-domain.local
por su dominio, en las rutas, server_name
, etc., en todos los archivos de configuración:
Levante los contenedores y espere a que inicien:
docker-compose up -d
Una vez probados los servicios, podemos crear los certificados. Ejecuta el siguiente comando, pero sustituye <your@email>
por tu correo:
docker-compose run --rm certbot certonly --email <your@email> --webroot --webroot-path /var/www/certbot --dry-run -d <domain> -d www.<domain> -d nodejs.<domain> -d python.<domain> -d php.<domain> --agree-tos
Si todo está bien con los certificados debemos obtener un mensaje que diga lo siguiente The dry run was successful
. Ahora ejecutamos el mismo comando ya sin --dry-run
:
docker-compose run --rm certbot certonly --email <your@email> --webroot --webroot-path /var/www/certbot -d <domain> -d www.<domain> -d nodejs.<domain> -d python.<domain> -d php.<domain> --agree-tos
Ahora, tenemos que detener los contenedores y modificar los archivos de configuración:
docker-compose down
Comentamos la línea 10 proxy_pass http://<container>:<port>
y descomentamos la línea 11 return 301 https://$server_name$request_uri;
. También descomentamos la configuración SSL-HTTPS de las líneas 15 a 32 en:
En el caso de default.conf, que es el SSL default, comentamos las líneas 16 root /var/www/html;
, 17 index index.html index.htm index.nginx-debian.html;
, 18 try_files $uri $uri/ =404;
y descomentamos la 19 return 301 https://$server_name$request_uri;
. También descomentamos la configuración SSL-HTTPS de las líneas 23 a 45.
Ahora, podemos levantar los contenedores:
docker-compose up -d
Debemos ejecutar el siguiente comando:
docker-compose run --rm certbot renew
Podemos cambiar los puertos y algunos datos de la BD en el archivo dotenv.