apache和nginx关联php的过程

Nginx端

Nginx是一个服务器,同时也是一个功能强大的proxy服务器,除了进行http请求的代理,还可以进行其他协议请求代理(fastCgi协议),为了能使nginx理解fastCgi协议,nginx提供了fastcgi模块来降http请求映射为对应的fastCgi请求

fastcgi_param:处理映射关系

fastcgi_pass:指定fpm进程监听的地址

FPM端

fmp是一个php进程管理器,包含master和worker进程,master进程只有一个,负责监听端口,接收来自web server的请求,而worker进程则有多个,每个进程内部都嵌入了一个php解释器,是php代码真正执行的地方

  1. fpm的master接收到请求
  2. master根据worker进程进行处理,如果没有可用进程,配合nginx返回502
  3. worker进程进行处理,超时返回504
  4. 请求结束,返回结果

最终执行过程:

  •  nginx通过localtion将所有的php文件(http请求),通过转发交给fpm处理
  • php接收到请求后,进行处理

 知识点补充:

CGI:一种协议(帮助服务器和语言通信)

FastCgi:一种比CGI更快的协议(为了解决单线程问题)

PHP_Cgi:php自带的一个进程管理器

PHP-Fpm:php-cgi的升级版(有效控制内存和进程、可以平滑重载php配置)

 

php-fpm请求处理图

 

 

php-cgi请求处理图

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章