Este guia explica como instalar Nginx, configurar um site e obter um certificado SSL gratuito com Certbot para proteger o seu site com HTTPS.
📋 Pré-requisitos
- VPS com acesso root ou sudo
- Domínio apontando para o IP do servidor (ex.:
mysite.com) - Portas 80 (HTTP) e 443 (HTTPS) abertas na firewall
Nota: Sem domínio, pode testar com o IP, mas o Certbot requer um domínio para certificados SSL.
💡 Recomendação de infraestrutura
Nginx e Certbot funcionam perfeitamente nos nossos VPS NVMe com desempenho de disco excecional.
🚀 Passo 1: Instalar Nginx
Bashsudo apt update sudo apt install nginx -y nginx -v sudo systemctl status nginx
Autorizar Nginx na firewall (UFW):
Bashsudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS' sudo ufw status
Teste no browser: http://your-server-ip ou http://your-domain.com
📝 Passo 2: Configurar o site
Bashsudo mkdir -p /var/www/mysite.com sudo chown -R $USER:$USER /var/www/mysite.com sudo chmod -R 755 /var/www/mysite.com nano /var/www/mysite.com/index.html
Conteúdo HTML simples:
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>
Criar configuração Nginx:
Bashsudo nano /etc/nginx/sites-available/mysite.com
Nginx1server { 2 listen 80; 3 listen [::]:80; 4 5 server_name mysite.com www.mysite.com; 6 7 root /var/www/mysite.com; 8 index index.html; 9 10 location / { 11 try_files $uri $uri/ =404; 12 } 13}
Importante: Substitua mysite.com pelo seu domínio em todas as ocorrências.
Ativar o site:
Bashsudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/ sudo nginx -t sudo rm /etc/nginx/sites-enabled/default sudo systemctl reload nginx
Teste: http://your-domain.com
🔒 Passo 3: Instalar Certbot e obter certificado SSL
Bashsudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d mysite.com -d www.mysite.com
O Certbot fará algumas perguntas:
- Email: para notificações de renovação
- Termos: aceitar com
A - Partilhar email:
YouN - Redirecionar HTTP para HTTPS: escolher
2(recomendado)
Bashsudo certbot certificates
Teste: https://your-domain.com — deve ver o cadeado verde 🔒
🔄 Passo 4: Renovação automática
Bashsudo certbot renew --dry-run sudo systemctl status certbot.timer sudo systemctl enable certbot.timer sudo systemctl start certbot.timer
📁 Estrutura de ficheiros
/var/www/mysite.com/ # Ficheiros do site
/etc/nginx/ # Configuração Nginx
/etc/nginx/sites-available/ # Sites disponíveis
/etc/nginx/sites-enabled/ # Sites ativos
/etc/letsencrypt/ # Certificados SSL
🛠️ Comandos úteis
Bash1sudo systemctl start nginx 2sudo systemctl stop nginx 3sudo systemctl restart nginx 4sudo systemctl reload nginx 5sudo nginx -t 6sudo certbot renew 7sudo certbot certificates 8sudo tail -f /var/log/nginx/error.log
🆘 Resolução de problemas
Nginx não arranca
Bashsudo nginx -t sudo journalctl -u nginx -n 50
Certificado SSL não instala
- Verifique que o domínio aponta para o IP:
dig mysite.com - Portas 80 e 443 abertas:
sudo ufw status - Nginx a escutar na porta 80:
sudo netstat -tlnp | grep nginx server_namecorreto na configuração Nginx
Site não carrega em HTTPS
Bashsudo certbot certificates sudo nginx -t sudo ufw allow 443/tcp
📚 Recursos adicionais
❓ Perguntas frequentes
P: Preciso de pagar pelo certificado SSL?
R: Não! O Certbot usa Let's Encrypt, que oferece certificados gratuitos.
P: O certificado expira?
R: Sim, aos 90 dias, mas o Certbot renova automaticamente.
P: Posso ter vários sites no mesmo servidor?
R: Sim! Crie um ficheiro de configuração por site em /etc/nginx/sites-available/.
O seu site está agora protegido com HTTPS! 🚀🔒