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


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

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

                                      }


發佈了129 篇原創文章 · 獲贊 58 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章