Skip to content

Latest commit

 

History

History
85 lines (54 loc) · 2.73 KB

概念.md

File metadata and controls

85 lines (54 loc) · 2.73 KB

NGINX

cgi

CGI是web服务器运行外部程序的规范。CGI是为了保证web server传递过来的数据是标准格式的。CGI是一个协议

php-cgi解释 PHP 脚本的程序

fast-cgi

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-fpm

英文全称(PHP FastCGI Process Manager)PHP FastCGI进程管理器

avatar

    开始
     |
     |
www.example.com/index.php
     |
     |
nginx 80 端口
     |
     |
nginx 加载 fast-cgi 模块
     |
     |
反向代理到 php-fpm 监听的 9000 端口
     |
     |
php-fpm 处理请求并返回至 nginx
     |
     |
nginx 接收并返回客户端
     |
     |
    结束

进程模型