Guia passo a passo para instalar o Nginx no Debian 12, gerir o serviço com systemd, criar um virtual host e ativar HTTPS com Let’s Encrypt. Para clientes Boxis e administradores de sistemas.
Instalar e configurar o Nginx no Debian 12 (Bookworm)
Última atualização: março de 2026
Tempo de leitura: ~12 minutos
Público: administradores de sistemas e utilizadores avançados com um servidor Debian 12.
O Nginx é um servidor HTTP de elevado desempenho e um proxy reverso. No Debian 12 (Bookworm) integra-se bem com o systemd e é adequado à frente de PHP, Node.js ou APIs a montante. Este guia cobre uma instalação limpa, recomendações básicas de segurança, um virtual host mínimo e, opcionalmente, TLS com Let’s Encrypt.
O que vai obter
- Nginx instalado a partir dos repositórios Debian e serviço verificado.
- Portas HTTP/HTTPS abertas (exemplo com UFW).
- Raiz de documentos dedicada e um bloco
serverpróprio. - Opcional: certificado Let’s Encrypt e renovação automática.
Pré-requisitos
- Servidor Debian 12 com acesso SSH.
- Conta de utilizador com privilégios
sudo(evite trabalhar sempre comoroot). - Nome DNS (ex.:
app.example.com) a apontar para o IP público se pretender HTTPS e renovação automática. - Noções básicas de linha de comandos.
Nota Boxis: em alojamento gerido pela Boxis, alterações ao nível do servidor podem estar restritas; abra um ticket antes de modificar a stack web em ambientes partilhados.
1. Atualizar índices APT e instalar o Nginx
sudo apt update
sudo apt install -y nginx
O Debian fornece uma versão estável do Nginx; repositórios externos só são necessários para módulos específicos.
2. Firewall: permitir HTTP e HTTPS (UFW)
Se o UFW estiver ativo:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Com nftables ou grupos de segurança na cloud, abra TCP 80 e TCP 443 aí.
3. Gerir o Nginx com systemd
| Ação | Comando |
|---|---|
| Ativar no arranque | sudo systemctl enable nginx |
| Iniciar | sudo systemctl start nginx |
| Estado | sudo systemctl status nginx |
| Recarregar configuração | sudo systemctl reload nginx |
| Testar sintaxe | sudo nginx -t |
Após editar ficheiros de configuração, execute sempre nginx -t antes de recarregar.
4. Onde fica a configuração no Debian
Estrutura típica:
- Configuração principal:
/etc/nginx/nginx.conf - Sites:
/etc/nginx/sites-available/(ligações emsites-enabled/) - Extra:
/etc/nginx/conf.d/*.conf
Prefira sites-available / sites-enabled para ativar ou desativar sites sem apagar ficheiros.
5. Criar um virtual host (bloco server)
Exemplo: app.example.com com ficheiros em /var/www/app.example.com/html.
5.1 Diretórios e página de teste
sudo mkdir -p /var/www/app.example.com/html
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>OK</title></head><body><h1>It works</h1></body></html>' | sudo tee /var/www/app.example.com/html/index.html
sudo chown -R www-data:www-data /var/www/app.example.com
5.2 Ficheiro de configuração
Crie /etc/nginx/sites-available/app.example.com.conf:
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/app.example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Ative o site:
sudo ln -sf /etc/nginx/sites-available/app.example.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Verifique com o navegador ou curl -I http://app.example.com.
6. HTTPS com Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
Obtenha o certificado (ajuste e-mail e domínio):
sudo certbot --nginx -d app.example.com -m si@example.com --agree-tos --non-interactive
Verifique a renovação:
sudo certbot renew --dry-run
A renovação é normalmente gerida por um timer systemd ou cron; consulte systemctl list-timers | grep certbot.
7. Boas práticas
- Prefira
reloadarestartapós alterações simples à configuração. - Registos por site se o tráfego for elevado (
access_log/error_log). server_tokens off;se a política o permitir.- PHP ou aplicações:
fastcgi_passpara PHP-FPM ouproxy_passpara upstream coerente. - Cópia de segurança de
/etc/nginx/antes de alterações grandes.
8. Resolução rápida de problemas
| Sintoma | O que verificar |
|---|---|
502 Bad Gateway |
Aplicação indisponível; proxy_pass / fastcgi_pass incorreto. |
403 Forbidden |
Permissões; caminho root; SELinux/AppArmor. |
| Configuração rejeitada | sudo nginx -t e corrija as linhas indicadas. |
| Falha na renovação do certificado | DNS ainda aponta para este servidor; porta 80 acessível para HTTP-01. |
9. Resumo
Instalou o Nginx no Debian 12, abriu as portas web, criou um virtual host e, opcionalmente, ativou HTTPS com Certbot. Em produção, refine registos, limites de pedidos e monitorização dos serviços a montante.
Temas relacionados
- Pesquisa na base de conhecimento Boxis:
/{lang}/knowledgebase/search/ - Alojamento e DNS: categoria Alojamento e domínios quando disponível.
Documento genérico; os comandos podem variar conforme a imagem e personalizações.