nginx envoie généralement des requêtes au processus de gestion Fastcgi pour traitement, prenant le site PHP comme exemple : php-fpm est une implémentation du protocole Fastcgi, un hyperviseur qui gère PHP-CGI. Voici le schéma :
CGI signifie « Common Gateway Interface », un outil permettant aux serveurs HTTP de « communiquer » avec des programmes sur votre machine ou d’autres machines, et leurs programmes doivent fonctionner sur un serveur web.
Inconvénients de CGI : Lorsque chaque requête entre, CGI forke un nouveau processus, puis prend PHP comme exemple, chaque requête consomme une quantité considérable de mémoire, de sorte qu’au lancement, elle sera entièrement GG.
Pour résoudre ce problème, fastCgi a été créé.
FastCGI est comme un CGI à longue durée de vie, il peut être exécuté en permanence, tant qu’il est activé, il ne faut pas de temps pour forker à chaque fois (c’est le mode de synthèse CGI le plus critiqué). Il prend également en compte l’informatique distribuée, ce qui signifie que les programmes FastCGI peuvent être exécutés sur des hôtes autres que le serveur web et accepter les requêtes d’autres serveurs web.
Test
Créez un nouveau fichier php dans le répertoire D :\dev_tools\nginx-1.20.0\html\php pour empêcher nginx de signaler une erreur 404 lorsque le fichier est introuvable, comme suit :
NGINX fastcgi_pass est configuré comme suit :
Les données transmises par nginx fastcgi_pass doivent être analysées selon le protocole FastCGISi cela vous intéresse, vous pouvez aller le vérifier, j’utilise sokit ici pour activer une écoute TCP pour une réception simple, essayez d’utiliser un navigateur pour accéder à :http://127.0.0.1:22229/itsvse.php, comme montré dans la figure ci-dessous :
22:06:07 DAT ---> [TCP] 127.0.0.1:1032 <1136> ..................... B.... QUERY_STRING.. REQUEST_METHODGET.. CONTENT_TYPE.. CONTENT_LENGTH.. SCRIPT_NAME/itsvse.php.. REQUEST_URI/itsvse.php.. DOCUMENT_URI/itsvse.php. » DOCUMENT_ROOTD :/dev_tools/nginx-1.20.0/html/php.. SERVER_PROTOCOLHTTP/1.1..REQUEST_SCHEMEhttp.. GATEWAY_INTERFACECGI/1.1..SERVER_SOFTWAREnginx/1.20.0..REMOTE_ADDR127.0.0.1.. REMOTE_PORT1025.. SERVER_ADDR127.0.0.1.. SERVER_PORT22229.. SERVER_NAME.. REDIRECT_STATUS200.. HTTP_HOST127.0.0.1:22229..HTTP_CONNECTIONkeep-vivant.. HTTP_CACHE_CONTROLmax-âge=0.@HTTP_SEC_CH_UA « Chrome » ; v="92 », " Not A ; Brand » ; v="99 », « Google Chrome » ; v="92 ».. HTTP_SEC_CH_UA_MOBILE ?0..HTTP_UPGRADE_INSECURE_REQUESTS1.sHTTP_USER_AGENTMozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/92.0.4515.131 Safari/537.36.....HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml ; q=0,9,image/avif,image/webp,image/apng,*/* ; q=0,8,application/échange signé ; v=b3 ; q = 0.9..HTTP_SEC_FETCH_SITEnone.. HTTP_SEC_FETCH_MODEnavigate.. HTTP_SEC_FETCH_USER ?1..HTTP_SEC_FETCH_DESTdocument.. HTTP_ACCEPT_ENCODINGgzip, dégonfle, frère. HTTP_ACCEPT_LANGUAGEzh-CN,zh ; q=0,9,en ; q=0,8...................... (Fin)
|