ホームページ >バックエンド開発 >PHPチュートリアル >nginx と php がリクエストを実行する原理の紹介
この記事では、nginx と php の実行リクエストの原理を紹介します。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
まずは、よく耳にするcgi、php-cgi、fastcgi、php-fpmの関係を理解して、php
cgiの動作原理を理解しましょう。プロトコル
CGI プロトコルは、Web サーバー (nginx など)、つまり、コンテンツ配信サーバーによって渡されるデータとデータの形式を決定するために使用されます。
php-cgi プロセス インタプリタ
php-cgi は php の CGI プロトコル プロセス インタプリタです。起動するたびに、php.ini ファイルをロードし、php.ini ファイルを初期化する必要があります。実行環境 -> リクエストを処理 -> コンテンツを Web サーバーに返す -> ;php-cgi プロセス終了プロセス
fastcgi プロトコル
fastcgiプロトコルは、主にリクエストごとに CGI プロトコルの効率化を補完するものです。CGI インタープリタ プロセスの最適化を開始する必要があります。CGI インタープリタ プロセスは、php.ini ファイルをリロードして初期化する必要がなくなりました。 Web サーバー リクエストを受信するたびに実行環境を更新します。
server { listen 80; #监听80端口,接收http请求 server_name www.example.com; #一般存放网址,表示配置的哪个项目 root /home/wwwroot/zensmall/public/; # 存放代码的根目录地址或代码启动入口 index index.php index.html; #网站默认首页 #当请求网站的url进行location的前缀匹配且最长匹配字符串是该配置项时,按顺序检查文件是否存在,并返回第一个找到的文件 location / { #try_files,按顺序检查文件是否存在,返回第一个找到的文件 #$uri代表不带请求参数的当前地址 #$query_string代表请求携带的参数 try_files $uri $uri/ /index.php?$query_string; #按顺序检查$uri文件,$uri地址是否存在,如果存在,返回第一个找到的文件;如果都不存在,发起访问/index.php?$query_string的内部请求,该请求会重新匹配到下面的location请求 } #当请求网站的php文件的时候,反向代理到php-fpm去处理 location ~ \.php$ { include fastcgi_params; #引入fastcgi的配置文件 fastcgi_pass 127.0.0.1:9000; #设置php fastcgi进程监听的IP地址和端口 fastcgi_index index.php; #设置首页文件 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #设置脚本文件请求的路径 } }上記のサーバー設定の全体的な意味は、nginx がポート 80 で URL リクエストをリッスンするたびに、 URL で位置一致を実行します。 / ルールが一致する場合、内部リクエストはリダイレクトされ、/index.php?$query_string の内部リクエストが開始され、対応する場所設定ルールによってポートでリッスンする php-fpm のマスター プロセスにリクエストが送信されます。 9000
概要以下は、最も単純なユーザー リクエスト プロセスの概要です。ユーザーがドメイン名にアクセス -> ドメイン名が DNS 解決を実行 -> 対応する IP へのリクエストサーバーとポート -> nginx 対応するポートのリクエストをリッスン -> nginx は URL 上で位置一致を実行します -> 一致する場所でルールを実行します -> nginx はリクエストを php->php-fpm に転送しますマスター プロセスは nginx リクエストを監視します -> マスター プロセス アイドル状態のワーカー プロセスの 1 つにリクエストを割り当てます -> ワーカー プロセスはリクエストを実行します -> ワーカー プロセスは実行結果を nginx に返します -> nginx は結果を に返しますユーザー#########
以上がnginx と php がリクエストを実行する原理の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。