Nginx no Linux: Virtual Hosts, Proxy Reverso e SSL com Let's Encrypt
Nginx (pronuncia-se "engine-x") é o servidor web e proxy reverso mais usado no mundo, presente em mais de 34% dos sites com servidor web ativo. Ele supera o Apache em performance com conexões simultâneas por consumir muito menos memória por requisição.
Instalação
# Ubuntu/Debian
sudo apt update && sudo apt install nginx -y
# CentOS/RHEL/Rocky
sudo dnf install nginx -y
# Iniciar e habilitar
sudo systemctl enable --now nginx
# Verificar status
sudo systemctl status nginx
# Testar no browser: http://SEU_IP → página padrão do Nginx
Estrutura de Diretórios
/etc/nginx/
├── nginx.conf # configuração principal
├── sites-available/ # blocos de servidor disponíveis
├── sites-enabled/ # links simbólicos para os ativos
├── conf.d/ # configurações extras (alternativa ao sites-*)
└── snippets/ # trechos reutilizáveis (SSL, fastcgi, etc.)
/var/log/nginx/
├── access.log # todas as requisições
└── error.log # erros e avisos
Virtual Host (Server Block)
Um virtual host permite servir múltiplos domínios no mesmo servidor:
# /etc/nginx/sites-available/meusite.com.br
server {
listen 80;
listen [::]:80;
server_name meusite.com.br www.meusite.com.br;
root /var/www/meusite.com.br;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/meusite.access.log;
error_log /var/log/nginx/meusite.error.log;
}
# Ativar o site
sudo ln -s /etc/nginx/sites-available/meusite.com.br /etc/nginx/sites-enabled/
# Verificar sintaxe antes de recarregar
sudo nginx -t
# Recarregar sem derrubar conexões ativas
sudo systemctl reload nginx
Proxy Reverso para Node.js / Python / Qualquer App
O uso mais comum do Nginx em ambientes modernos é como proxy reverso: ele recebe a requisição na porta 80/443 e repassa para a aplicação rodando em outra porta:
server {
listen 80;
server_name api.meusite.com.br;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
Este bloco funciona com Node.js, FastAPI (Python), Laravel (PHP via FPM), Rails, etc. Basta trocar a porta em proxy_pass.
HTTPS gratuito com Let's Encrypt
# Instalar Certbot
sudo apt install certbot python3-certbot-nginx -y
# Obter certificado e configurar Nginx automaticamente
sudo certbot --nginx -d meusite.com.br -d www.meusite.com.br
# Certbot adiciona automaticamente:
# listen 443 ssl;
# ssl_certificate / ssl_certificate_key
# redirect de HTTP → HTTPS
# Renovação automática (já configurada via cron/systemd timer)
sudo certbot renew --dry-run
Configurações de Performance
# Em nginx.conf, dentro do bloco http {}
# Compressão gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript
text/xml application/xml image/svg+xml;
gzip_min_length 1024;
# Cache de arquivos estáticos
server {
location ~* \.(jpg|jpeg|png|webp|avif|gif|ico|css|js|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
Comandos Essenciais
sudo nginx -t # testa configuração (sempre antes de recarregar)
sudo systemctl reload nginx # recarrega sem derrubar conexões
sudo systemctl restart nginx # reinicia completamente
sudo nginx -s quit # encerra graciosamente
# Ver erros em tempo real
sudo tail -f /var/log/nginx/error.log
# Ver requisições em tempo real
sudo tail -f /var/log/nginx/access.log
Nginx vs Apache
O Nginx usa arquitetura baseada em eventos (assíncrona), o que significa que uma única thread consegue lidar com milhares de conexões simultâneas. O Apache usa uma thread ou processo por conexão — ótimo para compatibilidade com módulos como mod_php, mas mais pesado em escala. Para servidores modernos com proxy reverso ou alta carga estática, Nginx é a escolha padrão.
Nginx e a Certificação LPI
O exame LPIC-2 (tópico 208) cobre instalação e configuração de servidores web, incluindo Nginx. Dominar virtual hosts, proxy reverso e SSL já cobre a maior parte do que é cobrado — e você ainda ganha um skill muito pedido em vagas de sysadmin e DevOps.