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

 

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