nginx trimite în general cereri către procesul de management fastcgi pentru procesare, luând ca exemplu site-ul php, php-fpm este o implementare a protocolului Fastcgi, un hipervizor care gestionează php-cgi. Iată diagrama de flux:
CGI înseamnă "Common Gateway Interface" (Interfață Gateway Comună), un instrument pentru serverele HTTP de a "comunica" cu programe de pe mașinile tale sau altele, iar programele lor trebuie să ruleze pe un server web.
Dezavantaje ale CGI: Când fiecare cerere intră, CGI va bifurca un proces nou, iar apoi va lua PHP ca exemplu, fiecare cerere consumă o cantitate considerabilă de memorie, astfel încât, la lansare, va fi complet GG.
Pentru a rezolva această problemă, a fost creat fastCgi.
FastCGI este ca un CGI de lungă durată, poate fi executat oricând, atâta timp cât este activat, nu durează să fie forkat de fiecare dată (acesta este cel mai criticat mod de tip fork-and-execute al CGI). De asemenea, suportă calculul distribuit, ceea ce înseamnă că programele FastCGI pot fi executate pe gazde diferite de serverul web și pot accepta cereri de la alte servere web.
Testa
Creează un nou fișier php în directorul D:\dev_tools\nginx-1.20.0\html\php pentru a preveni ca nginx să raporteze o eroare 404 atunci când fișierul nu poate fi găsit, după cum urmează:
NGINX fastcgi_pass este configurat astfel:
Datele transmise de nginx fastcgi_pass trebuie analizate conform protocolului FastCGIDacă ești interesat, poți merge să afli, eu folosesc sokit aici pentru a activa un TCP care ascultă pentru recepție simplă, încearcă să folosești un browser pentru a accesa:http://127.0.0.1:22229/itsvse.php, așa cum se arată în figura de mai jos:
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-viu.. HTTP_CACHE_CONTROLmax-vârstă=0.@HTTP_SEC_CH_UA"Chromium"; v="92", " Nu 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, ca 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,aplicație/schimb semnat; 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, dezumflă-te, br.. HTTP_ACCEPT_LANGUAGEzh-CN,zh; q=0,9,en; q=0,8...................... (Sfârșit)
|