前言:
linux下搭建nginx+php+memached(lpmn)的時候,nginx.conf中配需要配置fastcgi,php需要安裝php-fpm擴充套件並啟動php-fpm守護程序,nginx才可以解析php指令碼。那麼,這樣配置的背後原理是什麼?nginx、fastcgi、php-fpm之間又有什麼關係呢?博主一直有這樣的疑惑,由於無法理清nginx、php-fpm之間的關係,遇到nginx解析不了php指令碼的時候,往往不知所措,花費的問題排查時間也非常長。因此,特地抽時間了解這背後的原理,梳理了一下nginx、fastcgi、php-fpm之間的關係。
一、fastcgi?
fastcgi是由cgi(common gateway inte***ce,通用閘道器介面)發展而來,是http伺服器(nginx、apache)和動態指令碼語言(php)之間的通訊介面。記住,fastcgi只是乙個介面。
fastcgi的優點:fastcgi採用c/s結構,可以將http伺服器和動態指令碼解析伺服器分離(二者可以部署在不同的伺服器上),讓http伺服器專一處理靜態請求和**動態請求到指令碼解析伺服器;指令碼解析伺服器則專一處理動態指令碼的請求。
二、nginx+fastcgi
nginx不支援對外部程式的直接呼叫或者解析,必須通過fastcgi進行呼叫。nginx收到cgi請求之後,fastcgi介面在指令碼解析伺服器上,啟動乙個或者多個守護程序對動態指令碼進行解析。
三、php-fpm
fastcgi程序管理器/引擎:即對動態指令碼進行實際解析的守護程序,由fastcgi啟動。這裡,php-fpm就是支援解析php的乙個fastcgi程序管理器/引擎。
總結:
fastcgi是nginx和php之間的乙個通訊介面,該介面實際處理過程通過啟動php-fpm程序來解析php指令碼,即
php-fpm相當於乙個動態應用伺服器,從而實現nginx動態解析php。因此,如果nginx伺服器需要支援php解析,需要在nginx.conf中增加php的配置:將php指令碼**到fastcgi程序監聽的ip位址和埠(php-fpm.conf中指定)。同時,php安裝的時候,需要開啟支援fastcgi選項,並且編譯安裝php-fpm補丁/擴充套件,同時,需要
啟動php-fpm程序,才可以解析nginx通過fastcgi**過來的php指令碼。
nginx fastCGI php fpm關係梳理
linux下搭建nginx php memached lpmn 的時候,nginx.conf中配需要配置fastcgi,php需要安裝php fpm擴充套件並啟動php fpm守護程序,nginx才可以解析php指令碼。那麼,這樣配置的背後原理是什麼?nginx fastcgi php fpm之間又...
nginx fastCGI php fpm關係梳理
前言 linux下搭建nginx php memached lpmn 的時候,nginx.conf中配需要配置fastcgi,php需要安裝 php fpm擴充套件並啟動php fpm守護程序,nginx才可以解析php指令碼。那麼,這樣配置的背後原理是什麼?nginx fastcgi php fp...
梳排序演算法
梳排序 comb sort 是一種由wlodzimierz dobosiewicz於1980年所發明的不穩定排序演算法,並由stephen lacey和richard box於1991年四月號的byte雜誌中推廣。梳排序是改良自氣泡排序和快速排序。在氣泡排序演算法中,只比較陣列中相鄰的二項,即比較的...