Web Servers 15 de enero, 2026 • 8 min de lectura

Cómo optimizar Nginx para alto tráfico

Guía completa de configuraciones avanzadas de Nginx para manejar miles de conexiones concurrentes sin comprometer el rendimiento.

Introducción

Nginx es uno de los servidores web más eficientes del mercado, pero su configuración por defecto no está optimizada para entornos de alto tráfico. En este artículo veremos las configuraciones clave que pueden multiplicar tu capacidad de manejo de conexiones concurrentes.

1. Worker Processes y Connections

La primera optimización es ajustar el número de procesos worker según tus núcleos de CPU:

# /etc/nginx/nginx.conf
worker_processes auto;  # Detecta automáticamente los núcleos
worker_rlimit_nofile 65535;  # Límite de archivos abiertos

events {
    worker_connections 4096;  # Conexiones por worker
    use epoll;  # Método eficiente en Linux
    multi_accept on;  # Acepta múltiples conexiones a la vez
}

2. Buffers y Timeouts

Ajustar los buffers reduce el uso de disco y mejora la velocidad de respuesta:

http {
    # Buffers
    client_body_buffer_size 128k;
    client_max_body_size 10m;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 16k;
    output_buffers 1 32k;
    postpone_output 1460;

    # Timeouts
    client_body_timeout 12;
    client_header_timeout 12;
    keepalive_timeout 15;
    send_timeout 10;
}

3. Compresión Gzip

La compresión reduce el ancho de banda hasta en un 70%:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript 
           application/json application/javascript application/xml+rss 
           application/rss+xml font/truetype font/opentype 
           application/vnd.ms-fontobject image/svg+xml;
gzip_disable "msie6";

4. Caché de archivos estáticos

Configurar caché agresivo para assets estáticos:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    access_log off;
}

5. Open File Cache

Cachear descriptores de archivos reduce operaciones de I/O:

open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

6. Límites del sistema operativo

No olvides ajustar los límites del kernel Linux:

# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15

# Aplicar cambios
sudo sysctl -p

Conclusión

Con estas optimizaciones, un servidor Nginx puede manejar fácilmente más de 10,000 conexiones concurrentes. Recuerda siempre hacer pruebas de carga con herramientas como ab, wrk o siege para validar las mejoras.

💡 Tip profesional:

Monitorea siempre el uso de recursos con htop y netstat después de aplicar cambios. La optimización es un proceso iterativo.