この記事では、PHP と nginx の間の動作メカニズムと原理について詳しく説明します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。
1. Nginx と Php-fpm に関連する知識ポイントを普及する
Nginx とは
Nginx (「エンジン x」) は、高性能 HTTP および Php-fpm です。応答サーバー IMAP/POP3/SMTP サーバーでもあるプロキシ サーバー。
Php-fpmとは
1.cgi、fast-cgiプロトコル
cgiの歴史
初期のWebサーバーはhtmlなどの静的ファイルのみを処理していました。しかし、テクノロジーの発展に伴い、phpなどの動的言語が登場しました。
Web サーバーが処理できません。どうすればよいですか?次に、PHP インタープリターに処理させます。
PHP インタープリターに任せるのは良いことですが、PHP インタープリターはどのように Web サーバーと通信するのでしょうか?
異なる言語インタープリター (php、python インタープリターなど) と Web サーバー間の通信の問題を解決するために、CGI プロトコルが登場しました。 CGI プロトコルに従ってプログラムを作成する限り、言語インタプリタと Webwerver 間の通信を実現できます。 php-cgiプログラムなど。
fast-cgi の改善
cgi プロトコルを使用すると、php インタプリタと Web サーバー間の通信の問題が解決され、Web サーバーは最終的に動的言語を処理できるようになります。
ただし、Web サーバーはリクエストを受信するたびに CGI プロセスをフォークし、リクエストの完了後にプロセスを強制終了します。リクエストが 10,000 件ある場合、php-cgi プロセスを 10,000 回フォークして強制終了する必要があります。
これがリソースの無駄だと感じたことはありますか?
そこで、cgi の改良版、fast-cgi が登場しました。 fast-cgi は毎回リクエストを処理した後、プロセスを強制終了せずにプロセスを保持し、プロセスが一度に複数のリクエストを処理できるようにします。このようにして、毎回プロセスを再フォークする必要がなくなり、効率が大幅に向上します。
2. php-fpmとは
php-fpmはphp-Fastcgi Process Managerです。
php-fpmはFastCGIの実装であり、プロセス管理機能を提供します。
プロセスにはマスタープロセスとワーカープロセスの2種類のプロセスが含まれます。
ポートをリッスンし、Web サーバーからのリクエストを受信する役割を担うマスター プロセスは 1 つだけです。通常は複数のワーカー プロセスがあります (特定の数は実際のニーズに応じて構成されます)。各プロセスには PHP インタープリターがあります。内部に埋め込まれており、コードが実際に実行される PHP です。
2. Nginx と Php-fpm を組み合わせる方法
Nginx には http リクエストを処理する機能があるだけでなく、リバース プロキシとしても使用できることがわかっています。
つまり、Nginx は、リバース プロキシ機能を通じて動的リクエストをバックエンド Php-fpm に転送します。
新しい Nginx Php-fpm を設定しましょう
1. nginx.conf ファイルを設定します
nginx ディレクトリに入り、nginx.conf ファイルを編集します。
図に示すように、nginx.conf の最後の行にインクルード ファイルを追加します
2. 対応するサーバーを追加します
Enter上記のインクルード パスを指定してサーバーを追加します。
#構成項目の意味を説明しましょう:
server { listen 80; #监听80端口,接收http请求 server_name www.example.com; #就是网站地址 root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径 #路由到网站根目录www.example.com时候的处理 location / { index index.php; #跳转到www.example.com/index.php autoindex on; } #当请求网站下php文件的时候,反向代理到php-fpm location ~ \.php$ { include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块 fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口 } }
簡単に言うと、www.example にアクセスしたときです。 .com の処理フローは次のようになります。
www.example.| || |.example.com/index.| |-| |-cgi监听127.0.0.1:| |.example.com/index.php请求到达127.0.0.1:9000 | | 等待处理。。。
このリクエストを処理できるように php の php-fpm を有効にしましょう
php-を開きますfpm.conf ファイルを参照して、次の設定に移動します。
つまり、php-fpm モジュールは 127.0.0.1:9000 ポートをリッスンし、リクエストを待ちます。処理されることになります。
3. 概要
nginx と php-fpm の組み合わせ、完全なプロセスは次のようになります。
nginx与php-fpm的结合,完整的流程是这样的。 www.example.com | | Nginx | | 路由到www.example.com/index.php | | 加载nginx的fast-cgi模块 | | fast-cgi监听127.0.0.1:9000地址 . | | www.example.com/index.php请求到达127.0.0.1:9000 | | php-fpm 监听127.0.0.1:9000 | | php-fpm 接收到请求,启用worker进程处理请求 | | php-fpm 处理完请求,返回给nginx | | nginx将结果通过http返回给浏览器
4. エフェクトの表示
1. nginx と php-fpm モジュールの起動
無事起動したので、php-fpm を確認してみましょうプロセス
上に示すように、マスター プロセスが 1 つとワーカー プロセスが 3 つあります。
以下に示すようにファイルを編集します:
この記事はここで終了です。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの PHP ビデオ チュートリアル 列に注目してください。
以上がPHP と nginx 間の動作メカニズムと原理の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。