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請求處理圖

 

posted @ 2021-03-27 10:46  花花妹子。  阅读(58)  评论(0编辑  收藏  举报