GNU/Linux >> Tutoriels Linux >  >> Linux

Comment régler NGINX pour le prochain 2022 ?

Nginx est un serveur Web open source gratuit, performant et léger qui est utilisé comme équilibreur de charge, proxy inverse, cache HTTP et proxy de messagerie. Bien que Nginx soit assez nouveau par rapport aux autres serveurs Web, sa popularité augmente en raison de ses hautes performances. Avec votre configuration Nginx par défaut, vous pouvez obtenir des performances rapides, mais nous pouvons optimiser les performances de Nginx en modifiant certaines configurations.

Dans cet article, vous découvrirez 8 meilleures façons de booster Nginx pour de meilleures performances. Pour illustrer l'exemple de cet article, j'ai installé Nginx sur le système Ubuntu 20.04 LTS.

Modifier les processus de travail

Toutes les demandes de serveur Web dans Nginx sont traitées par un processus de travail. Dans Nginx, les processus de travail sont conçus comme plusieurs processus de travail pour traiter la demande et un processus maître est responsable de la gestion de tous les processus de travail ainsi que de l'analyse de la configuration. Dans la configuration par défaut de Nginx, le paramètre de processus de travail est défini sur auto, ce qui génère le processus de travail en fonction du cœur de processeur disponible. Comme recommandé par la documentation officielle de Nginx, c'est le meilleur moyen de conserver le processus de travail en fonction du cœur de processeur disponible, de sorte que le paramètre automatique est recommandé. Si vous êtes curieux de savoir combien de cœurs vos processeurs ont, exécutez simplement la commande suivante.

$ grep processor /proc/cpuinfo | wc -l

Vous pouvez modifier la valeur par défaut du processus de travail à partir du fichier de configuration Nginx qui se trouve dans /etc/nginx/nginx.conf. Si votre serveur connaît un trafic plus élevé et que vous devez ajouter plus de processus de travail, il est préférable de mettre à niveau le serveur vers plus de processeurs principaux.

Améliorer la limite des connexions des travailleurs

La connexion de travail est le nombre total de connexions simultanées que chaque processus de travail disponible peut gérer. Par défaut, le processus de travail peut gérer 512 connexions à la fois. Avant de modifier la valeur de connexion du travailleur, vous devez vérifier le système de connexion max pour autoriser l'utilisation de la commande suivante pour mettre à jour la configuration de connexion en fonction de celle-ci.

$ ulimit -n

Mise en œuvre de la compression de contenu

Pour la compression de contenu Web, Nginx utilise gzip pour augmenter le délai de livraison du contenu et réduire les utilisations de la bande passante du réseau. Dans la configuration, vous pouvez trouver la configuration gzip à l'état commenté mais vous pouvez décommenter et modifier le gzip en fonction de vos besoins. Comme le processus de compression gzip utilise les ressources système, si vous disposez de ressources limitées, modifiez la configuration en conséquence, par exemple en compressant uniquement un type de fichier spécifique, un niveau de compression, etc.

Mise en cache du contenu statique

Dans ce développement Web moderne, la plupart des contenus sont servis de manière statique au navigateur ou au client, de sorte que la mise en cache des fichiers statiques chargera le contenu plus rapidement. Cela réduira également la demande de connexion au Nginx lorsque le contenu est chargé à partir du cache. Pour démarrer le processus de mise en cache, ajoutez la directive suivante à votre fichier de configuration d'hôte virtuel Nginx.

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

La directive ci-dessus met en cache le fichier de ressources pendant 30 jours. Vous pouvez définir la date d'expiration du cache en fonction de vos besoins.

Mise en mémoire tampon

La mise en mémoire tampon peut rendre la communication entre le client et le serveur plus efficace car elle conserve une partie de la réponse jusqu'à ce que la mémoire tampon se remplisse. Si la réponse est trop élevée par rapport à la taille réelle du tampon, Nginx écrira alors la réponse sur le disque, ce qui peut entraîner un problème de performances. Vous pouvez mettre à jour la directive suivante pour ajuster la taille du tampon en fonction de vos besoins.

Client_body_buffer_size  :Il détermine la taille réelle de la mémoire tampon utilisée pour contenir les données de réponse du client.

Client_header_buffer_size :Il gère la taille de l'en-tête du client. Normalement, régler la valeur sur 1k est suffisant.

Client_max_body_size :Il limite la réponse maximale du corps autorisée au client. Si la taille du corps dépasse sa valeur, Nginx lancera l'erreur avec "Request Entity Too Large".

Pour ajuster la taille de la mémoire tampon, ajoutez la directive suivante dans la section http.

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

Mise en mémoire tampon du journal d'accès

La journalisation est l'un des rôles essentiels dans le débogage du problème et l'audit. Comme la journalisation stocke toutes les données de requête qui affectent à la fois les cycles d'E/S et le processeur, ce qui entraîne des problèmes de performances. Vous pouvez réduire ce type d'impact en activant la mise en mémoire tampon dans le journal. Une fois que la taille du tampon atteint sa limite, Nginx écrit le contenu du tampon dans le journal. Vous pouvez activer la mise en mémoire tampon en ajoutant des paramètres de mémoire tampon avec des valeurs de taille à la directive de journal d'accès.

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

Ou vous pouvez désactiver le journal d'accès (s'il n'est pas nécessaire) de la manière suivante.

access_log off;

Limitation des valeurs de délai d'attente

Limiter la valeur du délai d'attente améliorera les performances de Nginx. Nginx attendra la demande de corps et d'en-tête du client pendant la période donnée. S'ils ne reçoivent pas les données de réponse à temps, Nginx déclenche un délai d'attente pour le client respectif. La valeur du délai d'attente peut être gérée par la directive suivante. Pour définir la durée du délai d'attente, copiez-collez la directive donnée ci-dessous dans la section http.

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

Le délai d'expiration du corps et de l'en-tête du client est une période de temps Nginx pour lire l'en-tête et le corps de la demande du client. Si elle n'est pas terminée à temps, la demande est terminée avec une erreur de délai d'attente. Keepalive_timeout est la durée après que nginx a fermé la connexion client keep-alive reste ouverte. Send_timeout est la durée pendant laquelle le client doit recevoir la réponse envoyée par Nginx.

Ouvrir le cache de fichiers

Sous Linux, presque tout est un fichier, lorsque open_file_cache est utilisé, le descripteur de fichier et tous les fichiers fréquemment consultés sont mis en cache sur le serveur. Surtout lorsque le service des fichiers HTML statiques à l'aide du cache de fichiers ouvert améliorera les performances de Nginx car il ouvre et stocke le cache en mémoire pendant un intervalle donné. Mettez la directive suivante de open_file_cache dans la section http pour lancer la mise en cache.

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

Conclusion

Ce sont les 8 façons d'augmenter les performances de Nginx par une simple modification du fichier de configuration Nginx. J'espère que la lecture de cet article vous aidera à lancer l'amélioration des performances de Nginx.


Linux
  1. Comment faire en sorte que sudo se souvienne du mot de passe plus longtemps

  2. Comment vérifier les fichiers volumineux dans la console

  3. Comment utiliser le package d'optimisation d'image pour WP-CLI

  4. Comment trouver le fichier .pid pour un processus donné

  5. Comment spécifier le nom d'hôte pour le conteneur en cours d'exécution ?

NGINX vs Apache - Choisir le meilleur serveur Web en 2022

Comment obtenir les meilleures performances du serveur Nginx

Comment réparer les connexions de travail ne sont pas assez d'erreur sur Nginx

Comment configurer votre Raspberry Pi OS pour l'utiliser pour la première fois

Comment configurer HAProxy comme équilibreur de charge pour Nginx dans CentOS 7

Comment configurer un serveur NGINX RTMP pour le streaming