Nginx - Configuração e Comandos
📚 Sobre este manual: Comandos e configurações essenciais do Nginx para gerenciar seus sites no servidor.
📑 Índice Rápido
🔧 Comandos Básicos do Nginx
# Testar configuração (sempre faça antes de recarregar!)
sudo nginx -t
# Recarregar configurações (sem downtime)
sudo systemctl reload nginx
# Reiniciar Nginx (com downtime)
sudo systemctl restart nginx
# Ver status
sudo systemctl status nginx
# Ver versão
nginx -v
💡 Dica: Sempre use
nginx -t antes de recarregar. Se der erro, corrija antes de prosseguir.
⚙️ Configuração Padrão de um Site
Arquivo: /etc/nginx/sites-available/nome-do-site
server {
listen 80;
listen [::]:80;
server_name seudominio.com.br www.seudominio.com.br;
location / {
include proxy_params;
proxy_pass http://unix:/var/www/nome-do-site/nome-do-site.sock;
# Buffers para respostas grandes
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
# Timeouts para operações demoradas
proxy_connect_timeout 150s;
proxy_send_timeout 150s;
proxy_read_timeout 300s;
send_timeout 300s;
}
location /static {
alias /var/www/nome-do-site/static;
expires 30d;
add_header Cache-Control "public, immutable";
}
location /media {
alias /var/www/nome-do-site/media;
expires 30d;
}
}
📌 Explicação:
server_name- Domínio que o site respondeproxy_read_timeout 300s- Aguarda 5 minutos por resposta (essencial para queries SQL lentas)expires 30d- Arquivos estáticos em cache por 30 dias_- Usarserver_name _;para aceitar qualquer domínio/IP (testes)
📝 Criar um Novo Site
# 1. Criar arquivo de configuração
sudo nano /etc/nginx/sites-available/nome-do-site
# 2. Colar a configuração padrão (substitua os placeholders)
# 3. Ativar o site
sudo ln -s /etc/nginx/sites-available/nome-do-site /etc/nginx/sites-enabled/
# 4. Testar e recarregar
sudo nginx -t
sudo systemctl reload nginx
✅ Ativar / Desativar Sites
# Ativar um site
sudo ln -s /etc/nginx/sites-available/nome-do-site /etc/nginx/sites-enabled/
# Desativar um site
sudo unlink /etc/nginx/sites-enabled/nome-do-site
# Ver sites ativos
ls -la /etc/nginx/sites-enabled/
# Ver todos sites disponíveis
ls -la /etc/nginx/sites-available/
# Recarregar após ativar/desativar
sudo systemctl reload nginx
📜 Logs do Nginx
# Ver últimos erros
sudo tail -20 /var/log/nginx/error.log
# Acompanhar erros em tempo real
sudo tail -f /var/log/nginx/error.log
# Ver últimos acessos
sudo tail -20 /var/log/nginx/access.log
# Limpar logs
sudo truncate -s 0 /var/log/nginx/error.log
sudo truncate -s 0 /var/log/nginx/access.log
⚠️ Atenção: O log de erro é essencial para diagnosticar problemas como 502 Bad Gateway.
❌ Erros Comuns e Soluções
502 Bad Gateway
Nginx não consegue se comunicar com o Gunicorn.
# Verificar se o socket existe
ls -la /var/www/nome-do-site/nome-do-site.sock
# Verificar se Gunicorn está rodando
ps aux | grep gunicorn
# Verificar permissões do socket
# O socket deve ser do usuário www-data
# Verificar se o caminho no Nginx está correto
sudo nginx -T | grep proxy_pass
403 Forbidden
Problema de permissão.
# Corrigir permissões
sudo chown -R www-data:www-data /var/www/nome-do-site
sudo chmod -R 755 /var/www/nome-do-site
nginx: [emerg] "server_name" directive is not allowed here
Erro de sintaxe no arquivo de configuração.
# Testar para ver o erro exato
sudo nginx -t
# O comando mostra a linha do erro
Porta 80 já em uso
# Ver o que está usando a porta
sudo lsof -i :80
# Ou
sudo netstat -tlnp | grep :80
💡 Boas práticas:
- ✅ Sempre faça
nginx -tantes de recarregar - ✅ Mantenha um arquivo por site em
sites-available - ✅ Use nomes descritivos para os arquivos (ex: meusite.com.br)
- ✅ Faça backup das configurações antes de alterar
- ✅ Após ativar um site, teste com
curl -I http://seudominio.com.br
Manual Técnico - Última atualização: Março 2026