nginx는 일반적으로 FastCGI 관리 프로세스에 요청을 보내 처리합니다. 예를 들어 PHP 사이트에서 PHP-FPM은 Fastcgi 프로토콜의 구현체로, PHP-CGI를 관리하는 하이퍼바이저입니다. 다음은 흐름도입니다:
CGI는 "Common Gateway Interface"의 약자로, HTTP 서버가 귀하나 다른 기기의 프로그램과 "통신"할 수 있는 도구이며, 해당 프로그램이 웹 서버에서 실행되어야 합니다.
CGI의 단점: 모든 요청이 들어올 때마다 CGI는 새로운 프로세스를 포크하며, PHP를 예로 들면 각 요청이 상당한 메모리를 차지하기 때문에 실행될 때 완전히 GG가 됩니다.
이 문제를 해결하기 위해 fastCGI가 만들어졌습니다.
FastCGI는 장기 CGI와 같아서, 활성화만 되어 있으면 항상 실행할 수 있고, 매번 포크하는 데 시간이 걸리지 않습니다(이것이 CGI에서 가장 비판받는 포크 앤 실행 모드입니다). 또한 분산 컴퓨팅을 지원하여, FastCGI 프로그램을 웹 서버 이외의 호스트에서 실행할 수 있고 다른 웹 서버로부터의 요청을 받을 수 있습니다.
테스트
파일을 찾을 수 없을 때 nginx가 404 오류를 보고하지 않도록 D:\dev_tools\nginx-1.20.0\html\php 디렉터리 아래에 새로운 PHP 파일을 생성하세요.
nginx fastcgi_pass는 다음과 같이 구성되어 있습니다:
nginx fastcgi_pass에서 전송되는 데이터는 FastCGI 프로토콜에 따라 해석되어야 합니다관심 있으시면 확인해 보실 수 있습니다. 저는 여기서 sokit을 사용해 간단한 수신을 위해 TCP 도청을 활성화합니다. 브라우저를 사용해 접속을 시도해 보세요:http://127.0.0.1:22229/itsvse.php, 아래 그림에서 볼 수 있습니다:
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-살아있는.. HTTP_CACHE_CONTROLmax-age=0.@HTTP_SEC_CH_UA"크롬"; v="92", "A가 아니다; 브랜드"; v="99", "구글 크롬"; 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, 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/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, 기빠져, 형... HTTP_ACCEPT_LANGUAGEzh-CN,zh; q=0.9,en; q=0.8...................... (끝)
|