NGinx obvykle posílá požadavky do procesu správy FastCGI k zpracování, například php-fpm je implementace protokolu Fastcgi, hypervisor spravující PHP-CGI. Tady je diagram postupu:
CGI znamená "Common Gateway Interface", nástroj pro HTTP servery k "komunikaci" s programy na vašem nebo jiných počítačích, a jejich programy musí běžet na webovém serveru.
Nevýhody CGI: Když každý požadavek vstoupí, CGI rozvětví nový proces a vezměte si například PHP, každý požadavek spotřebuje značné množství paměti, takže při spuštění bude zcela GG.
Aby se tento problém vyřešil, byl vytvořen fastCgi.
FastCGI je jako dlouhověké CGI, lze jej provádět neustále, pokud je aktivováno, netrvá dlouho se forkovat pokaždé (toto je nejvíce kritizovaný režim fork-and-execute v CGI). Podporuje také distribuované výpočty, což znamená, že programy FastCGI lze spouštět na hostitelích jiných než webový server a přijímat požadavky z jiných webových serverů.
Test
Vytvořte nový php soubor v adresáři D:\dev_tools\nginx-1.20.0\html\php, abyste zabránili hlášení chyby 404 při nalezení souboru pomocí nginx, a to následovně:
NGinx fastcgi_pass je konfigurován následovně:
Data přenášená nginx fastcgi_pass musí být parsována podle protokolu FastCGIPokud máte zájem, můžete jít a zjistit to, používám zde sokit pro zapnutí TCP poslechu pro jednoduchý příjem, zkuste použít prohlížeč pro přístup:http://127.0.0.1:22229/itsvse.php, jak je znázorněno na obrázku níže:
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-živý.. HTTP_CACHE_CONTROLmax-věk=0.@HTTP_SEC_CH_UA"Chrom"; v="92", " Ne 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, podobně jako 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, aplikace/podepsaná výměna; 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, vyfoukni, br.. HTTP_ACCEPT_LANGUAGEzh-CN,zh; q=0,9,en; q=0,8...................... (Konec)
|