CGI的英文全稱為Common Gateway Interface(公共閘道器介面),是Nginx和動態指令碼程式的橋樑,Nginx透過FastCGI介面將動態請求傳送給FastCGI,FastCGI中的Wrapper程序生成一個執行緒,將請求交給指令碼解釋程式執行,然後透過原來的socket將解釋執行後的結果原路返回給Nginx,之後Nginx將結果交給客戶端。 Nginx是透過套接字檔案socket來將動態請求傳送給wrapper,使用的是Tcp協議。wrapper透過CGI介面來接受請求。這樣web伺服器和解釋程式之間完全可以獨立開發,這樣避免瞭解釋程式直接呼叫伺服器的介面而導致的出錯和崩潰以及安全性問題。而且可以使Nginx專心處理靜態頁面請求和轉發動態請求,而將指令碼直譯器安裝在另一臺伺服器,使伺服器的壓力得到分攤。 CGI是作為PHP程式的補丁開發的,安裝PHP首先安裝其所依賴的庫,之後在編譯配置引數時加入對CGI的支援--enable-fpm --enable-cgi等選項。編譯PHP的擴充套件模組,需要用到php中的phpize工具用來生成模組編譯時的configure檔案,如果執行phpize時無法生成configure檔案,原因有:沒有安裝autoconf軟體包。 php-fpm程序的配置檔案為/usr/local/php/etc/php-fpm.conf 可以對php-fpm進行相應的配置。 Nginx配置支援fastcgi: location ~ \.php${ root html; fastcgi_pass unix:/tmp/fastcgi.soke //透過套接字檔案和cgi建立聯絡,該檔案在php-fpm.conf中設定 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME html$SCRIPT_FILE_NAME;設定引數 include fastcgi_params; //匯入fastcgi引數配置檔案,該檔案在nginx安裝時自動生成。 }
CGI的英文全稱為Common Gateway Interface(公共閘道器介面),是Nginx和動態指令碼程式的橋樑,Nginx透過FastCGI介面將動態請求傳送給FastCGI,FastCGI中的Wrapper程序生成一個執行緒,將請求交給指令碼解釋程式執行,然後透過原來的socket將解釋執行後的結果原路返回給Nginx,之後Nginx將結果交給客戶端。 Nginx是透過套接字檔案socket來將動態請求傳送給wrapper,使用的是Tcp協議。wrapper透過CGI介面來接受請求。這樣web伺服器和解釋程式之間完全可以獨立開發,這樣避免瞭解釋程式直接呼叫伺服器的介面而導致的出錯和崩潰以及安全性問題。而且可以使Nginx專心處理靜態頁面請求和轉發動態請求,而將指令碼直譯器安裝在另一臺伺服器,使伺服器的壓力得到分攤。 CGI是作為PHP程式的補丁開發的,安裝PHP首先安裝其所依賴的庫,之後在編譯配置引數時加入對CGI的支援--enable-fpm --enable-cgi等選項。編譯PHP的擴充套件模組,需要用到php中的phpize工具用來生成模組編譯時的configure檔案,如果執行phpize時無法生成configure檔案,原因有:沒有安裝autoconf軟體包。 php-fpm程序的配置檔案為/usr/local/php/etc/php-fpm.conf 可以對php-fpm進行相應的配置。 Nginx配置支援fastcgi: location ~ \.php${ root html; fastcgi_pass unix:/tmp/fastcgi.soke //透過套接字檔案和cgi建立聯絡,該檔案在php-fpm.conf中設定 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME html$SCRIPT_FILE_NAME;設定引數 include fastcgi_params; //匯入fastcgi引數配置檔案,該檔案在nginx安裝時自動生成。 }