1. 程式人生 > >PHP+FastCGI+Nginx動態請求處理配置

PHP+FastCGI+Nginx動態請求處理配置

oca oot 主動 index.php php 靜態頁面 nginx安裝 結果 web


Nginx不支持對外部程序的調用,所以必須通過FastCGI接口實現對外部程序的調用從而實現對client動態頁面請求的處理。

CGI的英文全稱為Common Gateway Interface(公共網關接口),是Nginx和動態腳本程序的橋梁。Nginx通過FastCGI接口將動態請求發送給FastCGI,FastCGI中的Wrapper進程生成一個線程。將請求交給腳本解釋程序運行,然後通過原來的socket將解釋運行後的結果原路返回給Nginx,之後Nginx將結果交給client。

Nginx是通過套接字文件socket來將動態請求發送給wrapper,使用的是Tcp協議。wrapper通過CGI接口來接受請求。這樣webserver和解釋程序之間全然能夠獨立開發,這樣避免了解釋程序直接調用server的接口而導致的出錯和崩潰以及安全性問題。並且能夠使Nginx專心處理靜態頁面請求和轉發動態請求。而將腳本解釋器安裝在還有一臺server,使server的壓力得到分攤。


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安裝時自己主動生成。

}


PHP+FastCGI+Nginx動態請求處理配置