Descripción Técnica de Nginx

Fundamentos de Nginx

Nginx es un servidor web y proxy inverso de alto rendimiento y confiabilidad, distribuido como software libre. Soporta despliegue en caliente, permitiendo operación continua 24/7 sin reiniicos durante meses y actualizaciones sin interrupciones. Optimizado para eficiencia, consume pocos recursos y gestiona hasta 50,000 conexiones simultáneas.

Características Clave

  • Alto rendimiento y escalabilidad
  • Arquitectura modular extensible
  • Modelo asíncrono no bloqueante (similar a Node.js)
  • Alta disponibilidad con operación ininterrumpida
  • Soporte para actualizaciones en caliente
  • Código abierto con ecosistema robusto

Casos de Uso

  1. Servicio de recursos estáticos desde sistema de archivos
  2. Proxy inverso con capacidades de caché y balanceo de carga
  3. Servicios API mediante OpenResty

Nginx y Node.js comparten conceptos como servidor HTTP y modelo asíncrono, pero se complementan: Nginx gestiona recursos de infraestructura (proxy, balanceo) mientras Node.js maneja lógica de negocio.

Instalación en CentOS

yum instalar nginx -y

Verifique los archivos instalados:

rpm -ql nginx
# Ruta de configuración principal
/etc/nginx/nginx.conf
# Archivos ejecutables
/usr/sbin/nginx
# Directorio de módulos
/usr/lib64/nginx/modulos

Comandos Esenciales

# Gestión con systemctl
systemctl habilitar nginx
systemctl iniciar nginx
systemctl recargar nginx

# Comandos directos
nginx -t         # Verificar configuración
nginx -s recargar # Recargar sin reinicio

Configuración Básica

usuario www-data;
procesos_trabajo auto;

eventos {
    conexiones_trabajo 2048;
}

http {
    incluir /etc/nginx/mime.tipos;
    servidor {
        escuchar 8080;
        servidor_nombre localhost;
        
        ubicacion / {
            raiz /var/www/html;
            indice index.html;
        }
    }
}

Estructura jerárquica: bloque principal → eventos → http → servidor → ubicación.

Parámetros Clave

Procesos

procesos_trabajo 4;
afinidad_cpu 1000 0100 0010 0001;

Conexiones

conexiones_trabajo 4096;
tiempo_espera_conexion 70;

Manejo de Solicitudes

Ubicaciones

ubicacion ~* \.(jpg|png)$ {
    alias /datos/recursos/;
}

Reescrituras

reescribir ^/galeria/(.*) /media/$1 permanente;

Headers

agregar_encabezado Control-Acceso-Origen *;

Proxy Inverso

servidor {
    escuchar 80;
    servidor_nombre proxy.ejemplo.com;
    
    ubicacion / {
        proxy_pass http://servidores_backend;
    }
}

arriba servidores_backend {
    servidor 192.168.1.10:8080;
    servidor 192.168.1.11:8080;
}

Balanceo de Carga

arriba cluster_aplicacion {
    hash $solicitud_uri;
    servidor 10.0.0.10:8000 peso=3;
    servidor 10.0.0.11:8000;
}

Estrategias: round-robin (predeterminado), hash, IP persistente, menor conexión.

Configuración de Caché

proxy_cache_path /cache/ niveles=1:2 llave_zon=cache_app:50m;
proxy_cache cache_app;
proxy_cache_valido 200 302 10m;

Seguridad TLS

servidor {
    escuchar 443 ssl;
    ssl_certificado /cert/server.crt;
    ssl_certificado_key /cert/server.key;
}

Optimización GZIP

gzip activado;
gzip_tipos texto/css application/json;
gzip_nivel_compresion 6;

Arquitectura Interna

Modelo multi-proceso: proceso maestro gestiona workers hijos. Recarga sin interrupciones mediante señales HUP para actualización de configuración.

Etiquetas: Nginx servidor-web Proxy-Inverso Balanceo-Carga Almacenamiento-Cache

Publicado el 7-13 16:53