Icono del sitio Binario 0

10 Configuraciones Esenciales para Acelerar Nginx y Optimizar el Rendimiento de tu Servidor

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Nginx tiene varias directivas y configuraciones que pueden ayudarte a acelerar el tráfico y optimizar el rendimiento del servidor. Aquí hay algunas configuraciones clave:

1. Uso de sendfile, tcp_nopush y tcp_nodelay

Estas ya las mencionamos, pero forman parte esencial de la optimización del tráfico:

sendfile on;
tcp_nopush on;
tcp_nodelay on;

2. Configuración de worker_processes y worker_connections

Asegúrate de optimizar el número de procesos y conexiones que Nginx puede manejar:

worker_processes auto;  # Usa todos los núcleos de CPU disponibles
worker_connections 1024; # Número máximo de conexiones por worker

3. Uso de Compresión (gzip)

Habilitar gzip comprime las respuestas antes de enviarlas al cliente, reduciendo el tráfico:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_vary on;

4. Cache de Archivos Estáticos

Sirve contenido estático desde el cache para evitar generar una nueva respuesta cada vez:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg|eot|otf)$ {
expires max;
log_not_found off;
access_log off;
}

5. Ajustes del Buffer

Evita fragmentar las respuestas al cliente ajustando los buffers:

client_body_buffer_size 10K;
client_max_body_size 8M;
client_header_buffer_size 1k;
large_client_header_buffers 4 8k;

6. HTTP/2

HTTP/2 acelera las conexiones al permitir multiplexing (múltiples solicitudes/respuestas por conexión):

listen 443 ssl http2;

7. Cache en Disco (FastCGI Cache o Proxy Cache)

Si usas Nginx como servidor de aplicaciones o proxy inverso, habilita el caché:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";

location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
proxy_pass http://backend;
}

8. Reducción de Conexiones Lentas (Timeouts)

Configura los tiempos de espera para evitar que las conexiones lentas consuman recursos innecesarios:

keepalive_timeout 15;
client_body_timeout 10;
client_header_timeout 10;
send_timeout 10;

9. Brotli (opcional)

Si tienes ngx_brotli instalado, puedes usar Brotli para una compresión más eficiente que gzip:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml+rss text/javascript;

10. Limitar Solicitudes (Rate Limiting)

Controla la cantidad de solicitudes que un cliente puede realizar en un periodo para evitar abusos:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

location / {
limit_req zone=mylimit burst=20 nodelay;
}

11. Monitorización del Estado

Usa el módulo stub_status para monitorizar el rendimiento de Nginx:

location /nginx_status {
stub_status;
allow 127.0.0.1; # Permite el acceso solo desde localhost
deny all;
}

Esto te dará métricas como conexiones activas, solicitudes por segundo, etc.

Salir de la versión móvil