✨
Laravel + Nginx + PHP-FPM の関係!
はじめに
「LaravelをDockerで動かしてるけど、Nginx?PHP-FPM?よく分からない…」
したがって、Nginx と PHP-FPM の関係を整理してみました!
システム構成
- Laravel:PHP製のWebアプリケーションフレームワーク
- Nginx:Webサーバー(リバースプロキシ)
- PHP-FPM:PHPの実行環境(FastCGI Process Manager)
リクエストの流れイメージ
[ User Browser ]
│
│ アクセス (http://example.com)
▼
[ Nginx ]
│
├─ 静的ファイルならここで返す (画像/CSS/JS)
│
└─ 動的リクエスト (PHPファイル)
│
└─▶ FastCGI プロトコルで依頼
│
▼
[ PHP-FPM (Laravel実行) ]
│
▼
実行結果 (HTML) を FastCGI で返す
│
▼
[ Nginx 経由でユーザーにレスポンス ]
Nginx と PHP-FPM の役割は?
コンポーネント | 役割 | 説明 |
---|---|---|
Nginx | 窓口・交通整理 | 超高速Webサーバー。静的ファイルは自分で返し、PHPのリクエストはPHP-FPMに回す。 |
PHP-FPM | PHP実行エンジン | PHPスクリプト(Laravelなど)を実行してHTMLを返す。 |
Nginxは中継役。でも超高速!
- 静的ファイルは即返答
- 動的なPHPリクエストは「PHP-FPMにお願い!」
PHP-FPMがなければPHPは動かない
- NginxはPHPを直接実行できない
- PHP-FPMは「PHP実行専用のプロセスマネージャ」
FastCGIって何?
- Nginx と PHP-FPM が会話するための 共通ルール(プロトコル)
- 昔のCGI方式は「リクエストのたびにPHPを起動」→ 超遅い
- FastCGIは「PHP-FPMが常に待機して高速処理」
まとめ
- Nginx:リクエストの入り口で交通整理するだけ。でも超高速。
- PHP-FPM:PHPの処理エンジン。これがなければPHPは動かない。
- FastCGI:NginxとPHP-FPMが会話するためのルール。
Discussion