Nginx 与 FPM 的工作机制

本文介绍FPM作为PHP进程管理器的工作原理及其与Nginx的集成方式。FPM由master进程和worker进程组成,master进程负责接收请求并分配给worker进程处理。Nginx通过fastcgi模块将HTTP请求转换为FastCGI请求,进而传递给FPM。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FPM是什么

FPM 是一个 PHP 进程管理器,包含 master 进程和 worker 进程两种进程:master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个 (具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方,下图是我本机上 fpm 的进程情况,1一个 master 进程,6个 worker 进程:
php-fpm进程

从 FPM 接收到请求,到处理完毕,其具体的流程如下:

1. FPM 的 master 进程接收到请求

2. master 进程根据配置指派特定的 worker 进程进行请求处理,如果没有可用进程,返回错误,这也是我们配合 Nginx遇到502错误比较多的原因。

3. worker 进程处理请求,如果超时,返回504错误

4. 请求处理结束,返回结果

NGINX发送请求到FPM

Nginx 不仅仅是一个 Web 服务器,也是一个功能强大的 Proxy 服务器,除了进行 http 请求的代理,也可以进行许多其他协议请求的代理,包括本文与 fpm 相关的 fastcgi 协议。为了能够使 Nginx 理解 fastcgi 协议,Nginx 提供了 fastcgi 模块来将 http 请求映射为对应的 fastcgi 请求。
fastcgi.conf 其主要完成的工作是将 Nginx 中的变量翻译成 PHP 中能够理解的变量。
这里写图片描述

nginx配置虚拟主机,然后我们通过 location 指令,将所有的以 .php 结尾的请求都交给 fastcgi 模块处理,从而把所有的 php 请求都交给了 fpm 处理,从而完成 Nginx 到 fpm 的闭环。
nginx配置文件
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值