GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo ajustar NGINX para el próximo 2022?

Nginx es un servidor web gratuito de código abierto, ligero y de alto rendimiento que se utiliza como equilibrador de carga, proxy inverso, caché HTTP y proxy de correo. Aunque Nginx es bastante nuevo en comparación con otros servidores web, su popularidad está aumentando debido a su alto rendimiento. Con su configuración predeterminada de Nginx, puede obtener un rendimiento rápido, pero podemos aumentar el rendimiento de Nginx al máximo cambiando algunas configuraciones.

En este artículo, conocerá las 8 mejores formas diferentes de impulsar Nginx para un mejor rendimiento. Para demostrar el ejemplo de este artículo, instalé Nginx en el sistema Ubuntu 20.04 LTS.

Modificar procesos de trabajo

Todas las solicitudes del servidor web en Nginx son procesadas por un proceso de trabajo. En Nginx, los procesos de trabajo están diseñados como múltiples procesos de trabajo para procesar la solicitud y un proceso maestro es responsable de administrar todos los procesos de trabajo y analizar la configuración. En la configuración predeterminada de Nginx, el parámetro del proceso de trabajo se establece en automático, lo que genera el proceso de trabajo de acuerdo con el núcleo de CPU disponible. Según lo recomendado por los documentos oficiales de Nginx, es la mejor manera de mantener el proceso de trabajo de acuerdo con el núcleo de CPU disponible, por lo que se recomienda el parámetro automático. Si tiene curiosidad acerca de cuántos núcleos tienen sus procesadores, simplemente ejecute el siguiente comando.

$ grep processor /proc/cpuinfo | wc -l

Puede cambiar el valor predeterminado del proceso de trabajo desde el archivo de configuración de Nginx que se encuentra en /etc/nginx/nginx.conf. Si su servidor experimenta un mayor tráfico y necesita agregar más procesos de trabajo, es mejor actualizar el servidor a más procesadores centrales.

Mejora del límite de conexiones de los trabajadores

La conexión del trabajador es el número total de conexiones simultáneas que cada proceso de trabajo disponible puede administrar. De forma predeterminada, el proceso de trabajo puede administrar 512 conexiones a la vez. Antes de modificar el valor de la conexión del trabajador, debe verificar el sistema de conexión máxima para permitir usar el siguiente comando para actualizar la configuración de la conexión de acuerdo con él.

$ ulimit -n

Implementación de la compresión de contenido

Para la compresión de contenido web, Nginx usa gzip para aumentar el tiempo de entrega del contenido y disminuir el uso del ancho de banda de la red. En la configuración, puede encontrar la configuración de gzip en el estado comentado, pero puede descomentar y modificar el gzip según sus necesidades. Como el proceso de compresión gzip usa los recursos del sistema, si tiene recursos limitados, modifique la configuración según esto, como comprimir solo un tipo específico de archivo, nivel de compresión, etc.

Almacenamiento en caché de contenido estático

En este desarrollo web moderno, la mayoría de los contenidos se envían de forma estática al navegador o al cliente, por lo que almacenar en caché los archivos estáticos cargará el contenido más rápido. También disminuirá la solicitud de conexión a Nginx a medida que los contenidos se carguen desde el caché. Para iniciar el proceso de almacenamiento en caché, agregue la siguiente directiva a su archivo de configuración de host virtual Nginx.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

La directiva anterior almacena en caché el archivo de recursos durante 30 días. Puede establecer la fecha de caducidad de la memoria caché según sus necesidades.

Búfer

El almacenamiento en búfer puede hacer que la comunicación entre el cliente y el servidor sea más eficiente, ya que retiene parte de la respuesta hasta que se llena el búfer. Si la respuesta es demasiado alta que el tamaño real del búfer, Nginx escribirá la respuesta en el disco, lo que puede provocar un problema de rendimiento. Puede actualizar la siguiente directiva para ajustar el tamaño del búfer de acuerdo con sus requisitos.

Client_body_buffer_size :determina el tamaño real del búfer que se utiliza para contener los datos de respuesta del cliente.

Client_header_buffer_size :Gestiona el tamaño de la cabecera del cliente. Normalmente, establecer el valor en 1k es lo suficientemente bueno.

Client_max_body_size :Limita la respuesta corporal máxima permitida al cliente. Si el tamaño del cuerpo supera su valor, Nginx arrojará el error "Entidad de solicitud demasiado grande".

Para ajustar el tamaño del almacenamiento en búfer, agregue la siguiente directiva dentro de la sección http.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Búfer de registro de acceso

El registro es una de las funciones fundamentales en la depuración del problema y la auditoría. Como el registro almacena todos los datos de solicitud que afectan tanto a los ciclos de E/S como a la CPU, lo que genera problemas de rendimiento. Puede reducir este tipo de impacto habilitando el almacenamiento en búfer en el registro. Una vez que el tamaño del búfer alcanza su límite, Nginx escribe el contenido del búfer en el registro. Puede habilitar el almacenamiento en búfer agregando parámetros de búfer con valores de tamaño a la directiva de registro de acceso.

access_log /var/log/nginx/access.log main buffer=16k;
Code language: JavaScript (javascript)

O puede deshabilitar el registro de acceso (si no es necesario) de la siguiente manera.

access_log off;

Limitar los valores de tiempo de espera

Limitar el valor del tiempo de espera mejorará el rendimiento de Nginx. Nginx esperará la solicitud del cuerpo y el encabezado del cliente durante el período de tiempo determinado. Si no reciben los datos de respuesta a tiempo, Nginx activa un tiempo de espera para el cliente respectivo. El valor de tiempo de espera se puede administrar mediante la siguiente directiva. Para establecer la duración del tiempo de espera, copie y pegue la directiva que se proporciona a continuación dentro de la sección http.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

El tiempo de espera del cuerpo y el encabezado del cliente es un período de tiempo en el que Nginx lee el encabezado y el cuerpo de la solicitud del cliente. Si no se completa a tiempo, la solicitud finaliza con un error de tiempo de espera. Keepalive_timeout es la duración después de que nginx cierra la conexión del cliente, la conexión de mantenimiento permanece abierta. Send_timeout es la duración durante la cual el cliente debe recibir la respuesta enviada por Nginx.

Abrir caché de archivos

En Linux, casi todo es un archivo, cuando se usa open_file_cache, el descriptor del archivo y todos los archivos a los que se accede con frecuencia se almacenan en caché en el servidor. Especialmente cuando se entregan archivos Html estáticos usando caché de archivo abierto, se mejorará el rendimiento de Nginx a medida que abre y almacena caché en la memoria durante un intervalo determinado. Coloque la siguiente directiva de open_file_cache en la sección http para iniciar el almacenamiento en caché.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Conclusión

Estas son las 8 formas de aumentar el rendimiento de Nginx mediante una simple modificación del archivo de configuración de Nginx. Espero que leer este artículo lo ayude a iniciar el aumento del rendimiento de Nginx.


Linux
  1. Cómo hacer que sudo recuerde la contraseña por más tiempo

  2. Cómo buscar archivos grandes en la consola

  3. ¿Cómo hago que Sudo solicite la contraseña de root?

  4. ¿Cómo cambiar la resolución de Bash para una máquina virtual Debian?

  5. ¿Cómo especificar el nombre de host para el contenedor en ejecución?

NGINX vs Apache:elegir el mejor servidor web en 2022

Cómo obtener el mejor rendimiento del servidor Nginx

Cómo arreglar las conexiones de los trabajadores no son suficientes errores en Nginx

Cómo configurar tu sistema operativo Raspberry Pi para usarlo por primera vez

Cómo configurar HAProxy como Load Balancer para Nginx en CentOS 7

Cómo configurar un servidor NGINX RTMP para transmisión