Nginx zvyčajne odosiela požiadavky do procesu správy FastCGI na spracovanie, napríklad php-fpm je implementácia protokolu Fastcgi, hypervízora, ktorý spravuje php-cgi. Tu je diagram toku:
CGI znamená "Common Gateway Interface" (Common Gateway Interface), nástroj pre HTTP servery na "komunikáciu" s programami na vašom alebo iných počítačoch a ich programy musia bežať na webovom serveri.
Nevýhody CGI: Keď každá požiadavka vstúpi, CGI rozvetví nový proces, a potom vezmime PHP ako príklad, každá požiadavka spotrebuje značné množstvo pamäte, takže pri spustení bude úplne GG.
Na vyriešenie tohto problému bol vytvorený fastCgi.
FastCGI je ako dlhoveké CGI, môže sa vykonávať neustále, pokiaľ je aktivované, netrvá dlho sa zakaždým forknúť (toto je najviac kritizovaný režim fork-and-execute v CGI). Podporuje tiež distribuované výpočty, čo znamená, že programy FastCGI môžu byť spúšťané na iných hostiteľoch než webový server a prijímať požiadavky z iných webových serverov.
Test
Vytvorte nový php súbor v adresári D:\dev_tools\nginx-1.20.0\html\php, aby nginx nehlásil chybu 404, ak súbor nie je nájsť, nasledovne:
NGinx fastcgi_pass je nakonfigurovaný nasledovne:
Dáta prenášané nginx fastcgi_pass musia byť spracované podľa protokolu FastCGIAk máš záujem, môžeš ísť a zistiť to, používam sokit tu na povolenie TCP počúvania pre jednoduchý príjem, skús použiť prehliadač na prístup:http://127.0.0.1:22229/itsvse.php, ako je znázornené na obrázku nižšie:
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-vek=0.@HTTP_SEC_CH_UA"Chróm"; v="92", " Nie 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, podobne ako 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, aplikácia/podpísaná výmena; 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, vyfúkni, br.. HTTP_ACCEPT_LANGUAGEzh-CN,zh; q=0,9,en; q=0,8...................... (Koniec)
|