CGI是web服务器运行外部程序的规范。CGI是为了保证web server传递过来的数据是标准格式的。CGI是一个协议
php-cgi解释 PHP 脚本的程序
fast-cgi 是一个协议,它是应用程序和WEB服务器连接的桥梁。Nginx并不能直接与php-fpm通信,而是将请求通过fast-cgi交给php-fpm处理.fast-cgi是用来提升CGI程序性能的。fast-cgi是常驻型的CGI,它可以一直运行。
fast-cgi会先启动一个master,解析配置文件,初始化执行环境,然后再启动多个worker.当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就可以避免了重复劳动,效率自然提高。当workder不够用时,master可以根据配置预先启动几个worker;空闲worker太多时,会回收一些,这样提高了性能,也节约了资源。
nginx --> fast-cgi --> php-fpm --> 应用程序
- 初始化fast-cgi进程管理器,并启动多个cgi解析器子进程
- 当请求达到web服务器时,进程管理器选择并连接一个子进程,将环境变量和标准输入发送给它,处理完成后将标准输出和错误信息返还给web服务器
- 子进程关闭连接,继续等待下一个请求的到来
英文全称(PHP FastCGI Process Manager)PHP FastCGI进程管理器
开始
|
|
www.example.com/index.php
|
|
nginx 80 端口
|
|
nginx 加载 fast-cgi 模块
|
|
反向代理到 php-fpm 监听的 9000 端口
|
|
php-fpm 处理请求并返回至 nginx
|
|
nginx 接收并返回客户端
|
|
结束