Esta guía explica cómo instalar Nginx, configurar un sitio web y obtener un certificado SSL gratuito con Certbot.
📋 Requisitos previos
- VPS con acceso root o sudo
- Dominio apuntando a la IP del servidor (ej.:
misitio.com) - Puertos 80 y 443 abiertos en el cortafuegos
Nota: Puede probar con la IP, pero Certbot requiere un dominio para los certificados SSL.
💡 Recomendación de infraestructura
Nginx y Certbot funcionan perfectamente en nuestro VPS NVMe.
🚀 Paso 1: Instalar Nginx
Bashsudo apt update sudo apt install nginx -y nginx -v sudo systemctl status nginx
Permitir Nginx en UFW
Bashsudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS' sudo ufw status
Pruebe en el navegador: http://su-ip o http://su-dominio.com
📝 Paso 2: Configurar su sitio web
Bashsudo mkdir -p /var/www/misitio.com sudo chown -R $USER:$USER /var/www/misitio.com sudo chmod -R 755 /var/www/misitio.com nano /var/www/misitio.com/index.html
Contenido HTML de ejemplo:
HTML1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>My Website</title> 7</head> 8<body> 9 <h1>Welcome to my website!</h1> 10 <p>Your website is working correctly with Nginx.</p> 11</body> 12</html>
Crear configuración Nginx
Bashsudo nano /etc/nginx/sites-available/misitio.com
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 5 server_name misitio.com www.misitio.com; 6 7 root /var/www/misitio.com; 8 index index.html; 9 10 location / { 11 try_files $uri $uri/ =404; 12 } 13}
Importante: Reemplace misitio.com por su dominio real.
Bashsudo ln -s /etc/nginx/sites-available/misitio.com /etc/nginx/sites-enabled/ sudo nginx -t sudo rm /etc/nginx/sites-enabled/default sudo systemctl reload nginx
🔒 Paso 3: Instalar Certbot y obtener SSL
Bashsudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d misitio.com -d www.misitio.com
Certbot le pedirá:
- Email: para avisos de renovación
- Términos: acepte con
A - Compartir email:
YoN - Redirección HTTP→HTTPS: elija
2(recomendado)
Bashsudo certbot certificates
Pruebe en el navegador: https://su-dominio.com
🔄 Paso 4: Renovación automática
Bashsudo certbot renew --dry-run sudo systemctl status certbot.timer sudo systemctl enable certbot.timer sudo systemctl start certbot.timer
📁 Estructura de archivos
/var/www/misitio.com/ # Archivos del sitio
/etc/nginx/ # Configuración Nginx
/etc/nginx/sites-available/ # Sitios disponibles
/etc/nginx/sites-enabled/ # Sitios activos
/etc/letsencrypt/ # Certificados SSL
🛠️ Comandos útiles
Bash1sudo systemctl restart nginx 2sudo nginx -t 3sudo certbot renew 4sudo certbot certificates 5sudo tail -f /var/log/nginx/error.log
🆘 Solución de problemas
Nginx no arranca
Bashsudo nginx -t sudo journalctl -u nginx -n 50
Certificado SSL no se instala
- Verifique el DNS:
dig misitio.com - Verifique puertos 80/443:
sudo ufw status - Verifique que Nginx escucha en 80:
sudo ss -tlnp | grep nginx - Compruebe el
server_nameen la configuración
El sitio no carga por HTTPS
Bashsudo certbot certificates sudo nginx -t sudo ufw allow 443/tcp
📚 Recursos adicionales
❓ Preguntas frecuentes
P: ¿Debo pagar el certificado SSL?
R: No. Certbot usa Let's Encrypt, gratuito.
P: ¿Expira el certificado?
R: Sí, a los 90 días, pero Certbot lo renueva automáticamente.
P: ¿Puedo tener varios sitios en el mismo servidor?
R: Sí. Cree un archivo de configuración por sitio en /etc/nginx/sites-available/.
¡Su sitio web está asegurado con HTTPS! 🚀🔒