이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 9877|회답: 0

nginx fastcgi_pass 프로토콜이 간략히 소개되고 테스트됩니다

[링크 복사]
2021-11-16 22:16:20에 게시됨 | | | |
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......................
(끝)




이전의:Debian(도커 이미지) 기반 Curl을 설치하세요.
다음:E45: 'readonly' option is set (add ! to override)
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com