PHP-FPM 与 NGINX 通信过程
看了论坛中各种 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 接收并返回客户端
|
|
结束
本作品采用《CC 协议》,转载必须注明作者和本文链接
流程是写出来了,但是缺少分析,缺少总结,写得不够详细