El ajuste de rendimiento en NGINX es crucial para asegurar que tu servidor web o proxy inverso funcione de manera eficiente y pueda manejar grandes volúmenes de tráfico sin problemas. En esta sección, aprenderemos cómo optimizar NGINX para mejorar su rendimiento.
Conceptos Clave
- Parámetros de Configuración: Ajustes específicos en el archivo de configuración de NGINX que pueden mejorar el rendimiento.
- Caching: Almacenamiento en caché de contenido para reducir la carga en el servidor.
- Compresión: Uso de compresión para reducir el tamaño de las respuestas HTTP.
- Conexiones y Procesos: Configuración de la cantidad de conexiones y procesos que NGINX puede manejar.
- Optimización del Sistema Operativo: Ajustes en el sistema operativo que pueden mejorar el rendimiento de NGINX.
Parámetros de Configuración
worker_processes
El parámetro worker_processes
define el número de procesos de trabajo que NGINX debe usar. Generalmente, se recomienda configurarlo al número de núcleos de CPU disponibles.
worker_connections
El parámetro worker_connections
define el número máximo de conexiones que cada proceso de trabajo puede manejar simultáneamente.
keepalive_timeout
El parámetro keepalive_timeout
define el tiempo que NGINX mantendrá una conexión abierta después de enviar una respuesta.
sendfile
El parámetro sendfile
permite a NGINX usar la función sendfile
del sistema operativo para enviar archivos, lo que puede mejorar el rendimiento.
tcp_nopush y tcp_nodelay
Estos parámetros optimizan la forma en que NGINX envía datos a través de la red.
Caching
El almacenamiento en caché puede reducir significativamente la carga en el servidor. NGINX permite configurar el almacenamiento en caché de contenido estático y dinámico.
Configuración de Caché de Contenido Estático
Configuración de Caché de Proxy
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { location / { proxy_cache my_cache; proxy_pass http://backend; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; } }
Compresión
La compresión de respuestas HTTP puede reducir el tamaño de los datos enviados al cliente, mejorando así el rendimiento.
Configuración de Compresión gzip
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_proxied any; gzip_min_length 1000;
Conexiones y Procesos
Aumentar el Límite de Conexiones
Asegúrate de que el sistema operativo permita un número suficiente de conexiones.
Configuración de worker_rlimit_nofile
Optimización del Sistema Operativo
Ajustes de Kernel
Ajusta los parámetros del kernel para mejorar el rendimiento de la red.
sysctl -w net.core.somaxconn=65535 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.ip_local_port_range="1024 65535"
Configuración de Swappiness
Reduce el uso de swap para mejorar el rendimiento.
Ejercicio Práctico
Ejercicio 1: Optimización Básica
- Objetivo: Configurar NGINX para manejar un alto volumen de tráfico.
- Instrucciones:
- Ajusta
worker_processes
yworker_connections
en tu archivo de configuración de NGINX. - Habilita
sendfile
,tcp_nopush
, ytcp_nodelay
. - Configura la compresión gzip.
- Aumenta el límite de conexiones en el sistema operativo.
- Ajusta
Solución
worker_processes auto; events { worker_connections 1024; } http { sendfile on; tcp_nopush on; tcp_nodelay on; gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_proxied any; gzip_min_length 1000; server { listen 80; server_name example.com; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
Conclusión
En esta sección, hemos cubierto varios aspectos del ajuste de rendimiento en NGINX, desde la configuración de parámetros básicos hasta la optimización del sistema operativo. Estos ajustes pueden ayudar a mejorar significativamente el rendimiento de tu servidor NGINX, permitiéndole manejar un mayor volumen de tráfico de manera eficiente. En la próxima sección, exploraremos técnicas avanzadas de monitoreo y solución de problemas para mantener tu servidor NGINX funcionando sin problemas.
Curso de NGINX
Módulo 1: Introducción a NGINX
Módulo 2: NGINX como Servidor Web
- Sirviendo Contenido Estático
- Listados de Directorios
- Páginas de Error Personalizadas
- Registro y Formatos de Registro
Módulo 3: NGINX como Proxy Inverso
- Introducción al Proxy Inverso
- Configurando un Proxy Inverso
- Balanceo de Carga
- Verificaciones de Salud