看了論壇中各種 PHP-FPM 與 NGINX 通訊的解釋,在這裡依照自己的理解,再總結鞏固一下。
什麼是 PHP-FPM
PHP-FPM 英文全稱 (PHP FastCGI Process Manager) PHP FastCGI 程式管理器。
FastCGI (通用閘道器介面) 可以認為是一種通訊協議,nginx 伺服器就是通過這種通訊協議與 php 程式打交道的。所以 PHP-FPM 就是以 FastCGI 為通訊協議的 php 程式管理器。
NGINX 如何處理 PHP 請求
通過一個 nginx 的配置檔案可以瞭解到:
server {
listen 80; #監聽80埠,接收http請求
server_name www.example.com; #網站地址
root /usr/local/etc/nginx/www/; #準備存放程式碼工程的路徑
#路由到網站根目錄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; #php-fpm的master程式監聽的ip地址和埠
}
}
一個 php 請求過程大致如下:
開始
|
|
www.example.com/index.php
|
|
nginx 80 埠
|
|
nginx 載入 fastcgi 模組
|
|
反向代理到 fpm 監聽的 9000 埠
|
|
fpm 處理請求並返回至 nginx
|
|
nginx 接收並返回客戶端
|
|
結束