Configuración de Nginx con SSL Automático
Guía completa para configurar Nginx con certificados SSL automáticos usando Let's Encrypt y scripts de automatización.
Introducción
Configurar HTTPS en un servidor web es hoy un requisito fundamental. Let's Encrypt ofrece certificados gratuitos y renovación automática. En este tutorial veremos cómo integrarlo con Nginx de forma limpia y automatizada.
Requisitos previos
- Servidor con Ubuntu 20.04 o superior
- Nginx instalado (
apt install nginx) - Certbot instalado (
apt install certbot python3-certbot-nginx) - Dominio apuntando a la IP del servidor
Obtener el certificado
sudo certbot --nginx -d tudominio.com -d www.tudominio.com
Certbot modifica automáticamente el bloque server de Nginx para añadir las directivas SSL y configurar la redirección de HTTP a HTTPS.
Configuración base de Nginx
Un bloque servidor típico tras ejecutar Certbot queda así:
server {
listen 443 ssl;
server_name tudominio.com;
ssl_certificate /etc/letsencrypt/live/tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tudominio.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/tudominio.com/public_html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name tudominio.com;
return 301 https://$host$request_uri;
}
Renovación automática
Certbot instala un timer de systemd que renueva los certificados automáticamente antes de que expiren. Puedes verificarlo con:
sudo systemctl status certbot.timer
Para probar que la renovación funciona correctamente:
sudo certbot renew --dry-run
Script de recuperación rápida
Ante problemas de configuración, este script restaura Nginx a su estado base:
#!/bin/bash
sudo systemctl stop nginx
sudo rm -f /etc/nginx/sites-enabled/*
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
sudo systemctl start nginx
echo "Nginx restaurado a configuración por defecto"