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年=0.@HTTP_SEC_CH_UA「クロム」; v="92"、"Aではない; ブランド」; 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、ゲッコのように) 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...................... (終わり)
|