Nginx、fastCGI、php-fpm關係梳理
前言:
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 interface,通用閘道器介面)發展而來,是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指令碼
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2802952/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP-FPM,Nginx,FastCGI 之間的關係PHPNginxAST
- php-cli和php-fpm FastCgi與PHP-fpm之間的關係PHPAST
- 搞不清FastCgi與PHP-fpm之間是個什麼樣的關係ASTPHP
- cgi,fastcgi,php-fpmASTPHP
- 在segmentfault上回答了:搞不清FastCgi與PHP-fpm之間是個什麼樣的關係ASTPHP
- 淺談PHP fastcgi和php-fpmPHPAST
- CGI,FastCGI,PHP-FPM,PHP-CLI,modPHPASTPHP
- Nginx配置fastcgi cacheNginxAST
- Nginx 配置 fastcgi cacheNginxAST
- nginx結合fastcgiNginxAST
- Unix、Linux、GNU 關係梳理Linux
- equals與hashCode關係梳理
- PHP-fpm + nginxPHPNginx
- 白話 CGI,FastCGI,PHP-CGI,PHP-fpmASTPHP
- 區分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGIPHPAST
- 什麼是CGI、FastCGI、PHP-CGI、PHP-FPMASTPHP
- MSYS2、MinGW、Cygwin 關係梳理
- CGI、FastCGI、PHP-CGI和PHP-FPM 概念區分ASTPHP
- CGI FastCGI PHP-CGI與PHP-FPM概念介紹ASTPHP
- CGI,FastCGI,PHP-CGI與PHP-FPM的區別ASTPHP
- nginx + PHP-fpm 配置示例NginxPHP
- PHP-FPM和nginx配置PHPNginx
- centos php-fpm nginx配置CentOSPHPNginx
- 解釋nginx.conf.default 中關於fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;NginxAST
- CGI,FastCGI,PHP-CGI與PHP-FPM區別詳解ASTPHP
- CRM從4方面梳理客戶關係
- Nginx PHP-FPM and MySQL on CentOS 5NginxPHPMySqlCentOS
- Nginx的ngx_http_fastcgi_module模組NginxHTTPAST
- 離開 CGI,FastCGI,PHP-FPM 談高可用挺空中樓閣的!ASTPHP
- nginx 和 PHP-fpm 的互動NginxPHP
- 檢視nginx傳輸FASTCGI格式資料NginxAST
- Linux上配置Nginx+PHP5(FastCGI)LinuxNginxPHPAST
- 方案一、Nginx+mono+ fastcgi-mono-serverNginxMonoASTServer
- 如何理解Nginx, WSGI, Flask之間的關係NginxFlask
- PHP-FPM 與 NGINX 通訊過程PHPNginx
- 調整PHP-FPM(Nginx)的子程式PHPNginx
- nginx+fastcgi搭建高負載伺服器NginxAST負載伺服器
- Windows下Nginx+Web.py+FastCGI服務搭建WindowsNginxWebAST