Nginx en Linux: Virtual Hosts, Proxy Reverso y SSL con Let's Encrypt
Nginx (se pronuncia "engine-x") es el servidor web y proxy reverso más utilizado en el mundo, presente en más del 34% de los sitios con servidor web activo. Supera a Apache en rendimiento con conexiones simultáneas por consumir mucha menos memoria por solicitud.
Instalación
# 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
Estructura de Directorios
/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)
Un virtual host permite servir múltiples dominios en el mismo 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 / Cualquier App
El uso más común de Nginx en entornos modernos es como proxy reverso: recibe la solicitud en el puerto 80/443 y la reenvía a la aplicación que se ejecuta en otro puerto:
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 bloque funciona con Node.js, FastAPI (Python), Laravel (PHP via FPM), Rails, etc. Solo hay que cambiar el puerto en proxy_pass.
HTTPS gratuito con 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
Configuraciones de Rendimiento
# 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 Esenciales
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
Nginx utiliza arquitectura basada en eventos (asíncrona), lo que significa que un único hilo puede manejar miles de conexiones simultáneas. Apache usa un hilo o proceso por conexión — excelente para compatibilidad con módulos como mod_php, pero más pesado en escala. Para servidores modernos con proxy reverso o alta carga estática, Nginx es la elección estándar.
Nginx y la Certificación LPI
El examen LPIC-2 (tópico 208) cubre instalación y configuración de servidores web, incluyendo Nginx. Dominar virtual hosts, proxy reverso y SSL ya cubre la mayor parte de lo que se pide — y además ganas una habilidad muy solicitada en puestos de sysadmin y DevOps.
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.