Español

Instalar Nginx con certificado SSL (Certbot)

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

Bash
sudo apt update sudo apt install nginx -y nginx -v sudo systemctl status nginx

Permitir Nginx en UFW

Bash
sudo 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

Bash
sudo 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:

HTML
1<!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

Bash
sudo nano /etc/nginx/sites-available/misitio.com
Nginx
1server { 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.

Bash
sudo 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

Bash
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d misitio.com -d www.misitio.com

Certbot le pedirá:

  1. Email: para avisos de renovación
  2. Términos: acepte con A
  3. Compartir email: Y o N
  4. Redirección HTTP→HTTPS: elija 2 (recomendado)
Bash
sudo certbot certificates

Pruebe en el navegador: https://su-dominio.com

🔄 Paso 4: Renovación automática

Bash
sudo 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

Bash
1sudo 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

Bash
sudo nginx -t sudo journalctl -u nginx -n 50

Certificado SSL no se instala

  1. Verifique el DNS: dig misitio.com
  2. Verifique puertos 80/443: sudo ufw status
  3. Verifique que Nginx escucha en 80: sudo ss -tlnp | grep nginx
  4. Compruebe el server_name en la configuración

El sitio no carga por HTTPS

Bash
sudo 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! 🚀🔒

¿Necesita ayuda?

¿Preguntas sobre esta guía? Nuestro equipo y la comunidad están aquí para ayudarle.