Configura Nginx como proxy inverso para tu aplicación, con HTTPS automático mediante un certificado gratuito de Let's Encrypt.

Esta guía asume que Nginx ya está instalado (consulta la guía de instalación de Nginx) y que tienes un dominio apuntando a la IP de tu VPS.

  1. Instala Certbot y el complemento de Nginx:
    apt update && apt install certbot python3-certbot-nginx
  2. Crea una configuración de sitio en /etc/nginx/sites-available/myapp. Sustituye yourdomain.com y el puerto del proxy por tus valores:
    server {
        listen 80;
        server_name yourdomain.com;
    
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
  3. Activa el sitio y recarga Nginx:
    ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
    nginx -t && systemctl reload nginx
  4. Abre los puertos 80 y 443 en el cortafuegos del portal y también en local:
    ufw allow "Nginx Full"
  5. Obtén un certificado SSL gratuito:
    certbot --nginx -d yourdomain.com
    Certbot reescribirá automáticamente tu configuración de Nginx para gestionar HTTPS y las redirecciones de HTTP a HTTPS.
  6. Comprueba que la renovación automática está activa:
    systemctl status certbot.timer
    Certbot renueva los certificados automáticamente antes de que caduquen, sin que tengas que hacer nada.

Varios dominios: repite los pasos 2 a 5 para cada sitio adicional, usando un archivo de configuración distinto por dominio. Cada uno obtiene su propio certificado.

¿Te ha resultado útil esta guía?

¡Gracias por tus comentarios!