Maison  >  Article  >  Opération et maintenance  >  Comment configurer et optimiser FastCGI dans Nginx

Comment configurer et optimiser FastCGI dans Nginx

WBOY
WBOYavant
2023-05-21 08:16:272655parcourir

fastcgi :

fastcgi est développé et amélioré à partir de cgi. Le principal inconvénient de la méthode d'interface cgi traditionnelle est la faible performance, car chaque fois que le serveur http rencontre un programme dynamique, l'analyseur de script doit être redémarré pour effectuer l'analyse, puis les résultats sont renvoyés au serveur http. Ceci est presque indisponible lorsqu’il s’agit d’un accès simultané élevé. De plus, la méthode d'interface cgi traditionnelle est peu sécurisée et est rarement utilisée aujourd'hui. Le mode d'interface

fastcgi adopte la structure c/s, qui peut séparer le serveur http et le serveur d'analyse de script, et démarrer un ou plusieurs démons d'analyse de script sur le serveur d'analyse de script. Chaque fois que le serveur http rencontre un programme dynamique, celui-ci peut être transmis directement au processus fastcgi pour exécution, puis le résultat est renvoyé au navigateur. Cette méthode permet au serveur http de traiter exclusivement les requêtes statiques ou de renvoyer les résultats du serveur de script dynamique au client, ce qui améliore considérablement les performances de l'ensemble du système d'application.

nginx ne prend pas en charge l'appel direct ou l'analyse de programmes externes. Tous les programmes externes (y compris PHP) doivent être appelés via l'interface fastcgi. L'interface fastcgi est une socket sous Linux (cette socket peut être une socket file ou une socket ip). Pour appeler un programme cgi, un wrapper fastcgi est également nécessaire (un wrapper peut être compris comme un programme utilisé pour démarrer un autre programme). Ce wrapper est lié à un socket fixe, tel qu'un port ou un socket de fichier. Lorsque nginx envoie une requête cgi à ce socket, via l'interface fastcgi, le wrapper reçoit la requête puis génère un nouveau thread. Ce thread appelle l'interpréteur ou le programme externe pour traiter le script et lire les données de retour, puis le wrapper. les données renvoyées sont transmises à nginx via le socket fixe via l'interface fastcgi ; enfin, nginx envoie les données renvoyées au client. Il s'agit de l'ensemble du processus de fonctionnement de nginx+fastcgi. Le processus détaillé est tel qu’illustré sur la figure.

Comment configurer et optimiser FastCGI dans Nginx

Exemple :

Comment configurer et optimiser FastCGI dans Nginx

paramètres fastcgi dans nginx Exemple de configuration d'optimisation

Après avoir configuré nginx+fastcgi, afin d'assurer le fonctionnement rapide et stable de l'environnement php sous nginx, quelques instructions d'optimisation fastcgi doivent être ajoutées. Un exemple d'optimisation est donné ci-dessous. Ajoutez le code suivant au niveau http dans le fichier de configuration principal de nginx.

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=test:10m inactive=5m; 
fastcgi_connect_timeout 300; 
fastcgi_send_timeout 300; 
fastcgi_read_timeout 300; 
fastcgi_buffer_size 64k; 
fastcgi_buffers 4 64k; 
fastcgi_busy_buffers_size 128k; 
fastcgi_temp_file_write_size 128k; 
fastcgi_cache test; 
fastcgi_cache_valid 200 302 1h; 
fastcgi_cache_valid 301 1d; 
fastcgi_cache_valid any 1m;

La signification du code ci-dessus :

  • Dans la première ligne de code, le chemin du fichier, le niveau de structure des répertoires et la clé de le cache fastcgi est défini sur le temps de stockage de la zone Word et le temps de suppression des données inactives.

  • fastcgi_connect_timeout spécifie le délai d'expiration de la connexion au backend fastcgi.

  • fastcgi_send_timeout spécifie le délai d'attente pour l'envoi des requêtes à fastcgi. Cette valeur est le délai d'attente pour l'envoi des requêtes à fastcgi après que deux poignées de main ont été terminées.

  • fastcgi_read_timeout spécifie le délai d'attente pour recevoir les réponses fastcgi. Cette valeur est le délai d'attente pour recevoir les réponses fastcgi après deux poignées de main.

  • fastcgi_buffer_size est utilisé pour spécifier la taille d'un tampon est nécessaire pour lire la première partie de la réponse fastcgi. Cette valeur indique qu'un tampon de 64 Ko sera utilisé pour lire le. première partie de la réponse (en-tête de réponse), peut être définie sur la taille du tampon spécifiée par l'option fastcgi_buffers.

  • fastcgi_buffers spécifie combien et quelle taille de tampons sont nécessaires localement pour mettre en mémoire tampon les demandes de réponse fastcgi. Si la taille de la page générée par un script php est de 256 Ko, alors quatre tampons de 64 Ko seront alloués pour la mise en cache ; si la taille de la page est supérieure à 256 Ko, alors la partie supérieure à 256 Ko sera mise en cache dans le chemin spécifié par fastcgi_temp, mais c'est Ce n'est pas une bonne approche, car les données peuvent être traitées plus rapidement en mémoire que sur un disque dur. Généralement, cette valeur doit être la valeur moyenne de la taille de page générée par les scripts PHP du site. Si la taille de page générée par la plupart des scripts du site est de 256 Ko, cette valeur peut être définie sur « 16 16 Ko », « 4 ». 64k", etc.

  • La valeur par défaut de fastcgi_busy_buffers_size est deux fois la taille de fastcgi_buffers.

  • fastcgi_temp_file_write_size indique la taille d'un bloc de données utilisé lors de l'écriture des fichiers de cache. La valeur par défaut est le double de celle de fastcgi_buffers.

  • Activer le cache fastcgi et le nommer fait référence au rôle de fastcgi_cache. L'activation du cache est très utile, elle peut réduire efficacement la charge sur le processeur et empêcher les erreurs 502 de se produire, mais l'activation du cache peut également causer de nombreux problèmes, selon la situation spécifique.

  • fastcgi_cache_valid, fastcgi est utilisé pour spécifier le temps de cache du code de réponse. La valeur dans l'exemple indique que les réponses 200 et 302 seront mises en cache pendant une heure, et la réponse 301 sera mise en cache pendant 1 jour. Les autres réponses sont mises en cache pendant 1 minute.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer