Home / Guías / Nginx + SSL

Proxy inverso Nginx con HTTPS automático

Un Nginx delante de todo: tu aplicación Node, un API, un panel de juego. Agregue certificados Let's Encrypt gratuitos que se renueven y conecten WebSockets sin dolor.

1. DNS

Crear un registro A: app.example.com → YOUR_SERVER_IP. Espera unos minutos y compruebe desde el servidor:

getent hosts app.example.com

certbot no emitirá un certificado hasta que DNS puntos en su servidor.

2. Instalar Nginx y abrir el cortafuegos

apt update && apt install -y nginx certbot python3-certbot-nginx
ufw allow 80/tcp
ufw allow 443/tcp

3. El config de proxy inverso

cat > /etc/nginx/sites-available/app <<'EOF'
server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 300s;
    }
}
EOF
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

Los dos Upgrade líneas permiten WebSockets; el largo tiempo de lectura mantiene conexiones lentas (SSE, encuestas largas, paneles de juego) de ser cortados a 60 segundos. Reemplazamiento 127.0.0.1:3000 con cualquier puerto que tu app escuche.

4. HTTPS en un comando

certbot --nginx -d app.example.com --redirect -m [email protected] --agree-tos

certbot edita el config, añade el bloque 443, instala un temporizador de renovación y establece HTTP → HTTPS redireccion. Verificar obras de renovación:

certbot renew --dry-run
systemctl list-timers | grep certbot

5. Añadir más servicios

¿Otra aplicación en el puerto 3001? Copiar el bloque del servidor, cambiar server_name y proxy_passCorre certbot otra vez. Un Nginx puede contener docenas de sitios, un servidor de 6,5 € los maneja fácilmente.

¿Prefieres menos config? Caddy hace HTTPS con dos líneas — Nginx gana cuando necesitas un buen control sobre los encabezados, el cacheo y los timeouts.

6. Cuando algo se rompe

nginx -t
tail -f /var/log/nginx/error.log
curl -I https://app.example.com

502 significa que Nginx está bien pero su aplicación está bajada o en el puerto equivocado. 404 con una página incorrecta significa que otro bloque del sitio está captando la solicitud - check server_name.

Respuestas rápidas

¿Necesito un IP dedicado para HTTPS?

Para el acceso estándar del navegador — sí, necesita un plan con un IPv4 dedicado, porque Let's Encrypt valida su dominio en el puerto 80 o 443. NAT planea con puertos reenviados trabajar para bots, túneles y VPNs, no para sitios web públicos.

¿Son los certificados Let's Encrypt realmente libres?

Sí, y se renueven automáticamente cada 60 días a través del temporizador sistematbot instala. No hay una tarifa pagada necesaria para un sitio normal.

¿Puede Nginx proxy un Minecraft o un servidor de juegos?

No tráfico UDP — Nginx sólo habla HTTP. Los juegos usan sus propios puertos, los abren directamente en el cortafuegos.

Obtener un servidor con un IPv4 dedicado — los planes comienzan en €6.5/mes.

Relacionados