fastcgi(fast common gateway interface,快速通用网关接口),是一个可伸缩的、高速地在http server和动态脚本语言间通信的接口(或者说是协议)。
nginx + fastcgi运行原理 (推荐学习:php视频教程)
nginx不支持对外部程序的直接调用或者解析,所有的程序(包括php)必须通过fastcgi、uwsig接口调用。
fastcgi接口调用在linux下的socket(unix sockt或者ip:port 形式)。为了调用cgi程序,还需要一个fastcgi的wrapper,wrapper绑定在某个固定的socket上,如端口或者文件socket。
当nginx将cgi请求发送给这个socket时,通过fastcgi接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序 处理脚本,并读取返回数据;接着wrapper再将返回的数据通过fastcgi接口,沿着固定的socket传递给nginx。
最后nginx将返回的数据发送给客户端。
php-fpm
fastcgi接口方式在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行解析,这些进程就是fastcgi进程管理器,或者fastcgi引擎。
php-fpm就是支持php的fastcgi引擎。php-fpm是一个第三方的fastcgi进程管理器,作为php的一个补丁进行开发的,因此在安装的时候需要和php源码一起编译,也就是说php-fpm被编译到php内核中。
fastcgi 的主要优点是把动态语言和 http server 分离开来,所以 nginx 与php/php-fpm 经常被部署在不同的服务器上,以分担前端 nginx 服务器的压力,使 nginx专一处理静态请求和转发动态请求,而 php/php-fpm 服务器专一解析 php 动态请求。
以上就是nginx支持php吗的详细内容。