当前位置: 首页 > 科技观察

Nginx、FastCGI、PHP-fpm关系梳理

时间:2023-03-12 07:14:48 科技观察

Nginx、FastCGI、PHP-fpm进程的关系,nginx可以解析php脚本。那么,这种配置背后的基本原理是什么?nginx、fastCGI、php-fpm是什么关系?博主一直有这样的疑惑。因为他们无法弄清楚nginx和php-fpm的关系,所以在nginx无法解析php脚本的时候,他们往往一头雾水,排查问题需要很长时间。因此,我抽空了解了一下这背后的原理,整理了一下nginx、fastCGI、php-fpm的关系。1.快速CGI?fastCGI是从CGI(commongatewayinterface,公共网关接口)发展而来的,它是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。请记住,fastCGI只是一个接口。fastCGI的优点:fastCGI采用C/S结构,可以将http服务器和动态脚本解析服务器分开(两者可以部署在不同的服务器上),使得http服务器只能处理静态请求,将动态请求转发给脚本分析服务器;脚本解析服务器专门处理动态脚本请求。2、nginx+fastCGInginx不支持直接调用或解析外部??程序,必须通过fastCGI调用。nginx收到CGI请求后,fastCGI接口会在脚本解析服务器上启动一个或多个守护进程来解析动态脚本。3.php-fpmfastCGI进程管理器/引擎:实际解析动态脚本的守护进程,由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脚本。