Nginx、FastCGI、PHP-fpm关系梳理

服务器
Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本。

前言:

Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本。那么,这样配置的背后原理是什么?nginx、fastCGI、php-fpm之间又有什么关系呢?博主一直有这样的疑惑,由于无法理清nginx、php-fpm之间的关系,遇到nginx解析不了php脚本的时候,往往不知所措,花费的问题排查时间也非常长。因此,特地抽时间了解这背后的原理,梳理了一下nginx、fastCGI、php-fpm之间的关系。

[[214942]]

一、fastCGI?

fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。

fastCGI的优点:fastCGI采用C/S结构,可以将http服务器和动态脚本解析服务器分离(二者可以部署在不同的服务器上),让http服务器专一处理静态请求和转发动态请求到脚本解析服务器;脚本解析服务器则专一处理动态脚本的请求。

二、nginx+fastCGI

nginx不支持对外部程序的直接调用或者解析,必须通过fastCGI进行调用。nginx收到CGI请求之后,fastCGI接口在脚本解析服务器上,启动一个或者多个守护进程对动态脚本进行解析。

三、php-fpm

fastCGI进程管理器/引擎:即对动态脚本进行实际解析的守护进程,由fastCGI启动。这里,php-fpm就是支持解析php的一个fastCGI进程管理器/引擎。

总结:

fastCGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php。因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置:将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)。同时,php安装的时候,需要开启支持fastCGI选项,并且编译安装php-fpm补丁/扩展,同时,需要启动php-fpm进程,才可以解析nginx通过fastCGI转发过来的php脚本。

责任编辑:武晓燕 来源: 博客园
相关推荐

2010-05-07 09:02:29

NginxPHP-FPMAPC

2014-08-22 10:36:37

nginx负载均衡

2010-05-10 08:30:00

PHP-FPMnginx

2018-09-20 11:04:02

NginxPHP-FPM502

2021-05-12 08:13:31

Zabbix 5.2php-fpm监控

2011-11-28 21:49:45

Nginxphp-fpm优化

2018-07-09 10:14:15

服务器PHP-FPM优化

2017-07-19 16:58:53

PHPFastCGI 内核探索

2010-03-29 16:58:41

Nginx FastC

2015-06-10 16:05:26

NginxFastcgi

2015-10-12 09:13:02

PHPFastCGI mod_php

2011-02-25 16:30:47

MySQLPHPNginx

2017-05-18 13:33:16

Web服务器编译部署

2011-11-28 21:56:41

2010-03-29 10:38:36

Nginx配置

2017-03-09 13:26:33

2014-03-28 14:20:04

2013-04-25 10:01:35

Nginx

2009-06-30 09:50:10

IIS下配置PHPISAPIFastCGI

2012-09-18 13:24:10

互联网创业项目
点赞
收藏

51CTO技术栈公众号