nginx sender generelt anmodninger til FastCGI-administrationsprocessen for behandling; tag PHP-siden som eksempel, php-fpm er en implementering af FastCGI-protokollen, en hypervisor, der administrerer php-cgi. Her er flowchartet:
CGI står for "Common Gateway Interface", et værktøj til HTTP-servere til at "tale" med programmer på dine eller andre maskiner, og deres programmer skal køre på en webserver.
Ulemper ved CGI: Når hver anmodning indsættes, vil CGI forke en ny proces, og tag PHP som eksempel, hver anmodning bruger en betydelig mængde hukommelse, så når den startes, vil den være fuldstændig GG.
For at løse dette problem blev fastCgi oprettet.
FastCGI er som en langlivet CGI, den kan udføres hele tiden, så længe den er aktiveret, tager det ikke tid at forke hver gang (dette er den mest kritiserede fork-and-execute-tilstand i CGI). Den understøtter også distribueret databehandling, hvilket betyder, at FastCGI-programmer kan køres på andre værter end webserveren og modtage forespørgsler fra andre webservere.
Test
Opret en ny php-fil under D:\dev_tools\nginx-1.20.0\html\php-mappen for at forhindre, at nginx rapporterer en 404-fejl, når filen ikke kan findes, som følger:
Nginx fastcgi_pass konfigureres som følger:
De data, der transmitteres af nginx fastcgi_pass, skal parses i henhold til FastCGI-protokollenHvis du er interesseret, kan du finde ud af det, jeg bruger sokit her til at aktivere TCP-lytning for simpel modtagelse, prøv at bruge en browser for at få adgang til:http://127.0.0.1:22229/itsvse.php, som vist i figuren nedenfor:
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-levende.. HTTP_CACHE_CONTROLmax-age=0.@HTTP_SEC_CH_UA"Chrom"; v="92", " Ikke 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, ligesom Gecko) Chrome/92.0.4515.131 Safari/537.36.....HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml; q=0.9,billede/avif,billede/webp,billede/apng,*/*; q=0.8,applikation/signed-exchange; 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, tøm luften, br.. HTTP_ACCEPT_LANGUAGEzh-CN,zh; q=0,9,en; q=0,8...................... (Slut)
|