|
CGI的英文全稱為Common Gateway Interface(公共網(wǎng)關(guān)接口),是Nginx和動態(tài)腳本程序的橋梁,Nginx通過FastCGI接口將動態(tài)請求發(fā)送給FastCGI,F(xiàn)astCGI中的Wrapper進程生成一個線程,將請求交給腳本解釋程序執(zhí)行,然后通過原來的socket將解釋執(zhí)行后的結(jié)果原路返回給Nginx,之后Nginx將結(jié)果交給客戶端。
Nginx是通過套接字文件socket來將動態(tài)請求發(fā)送給wrapper,使用的是Tcp協(xié)議。wrapper通過CGI接口來接受請求。這樣web服務(wù)器和解釋程序之間完全可以獨立開發(fā),這樣避免了解釋程序直接調(diào)用服務(wù)器的接口而導(dǎo)致的出錯和崩潰以及安全性問題。而且可以使Nginx專心處理靜態(tài)頁面請求和轉(zhuǎn)發(fā)動態(tài)請求,而將腳本解釋器安裝在另一臺服務(wù)器,使服務(wù)器的壓力得到分攤。
CGI是作為php程序的補丁開發(fā)的,安裝php首先安裝其所依賴的庫,之后在編譯配置參數(shù)時加入對CGI的支持--enable-fpm --enable-cgi等選項。編譯php的擴展模塊,需要用到php中的phpize工具用來生成模塊編譯時的configure文件,如果運行phpize時無法生成configure文件,原因有:沒有安裝autoconf軟件包。
php-fpm進程的配置文件為/usr/local/php/etc/php-fpm.conf 可以對php-fpm進行相應(yīng)的配置。
Nginx配置支持fastcgi:
location ~ /.php${ root html; fastcgi_pass unix:/tmp/fastcgi.soke //通過套接字文件和cgi建立聯(lián)系,該文件在php-fpm.conf中設(shè)置 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME html$SCRIPT_FILE_NAME;設(shè)置參數(shù) include fastcgi_params; //導(dǎo)入fastcgi參數(shù)配置文件,該文件在nginx安裝時自動生成。 }
php技術(shù):PHP+FastCGI+Nginx配置PHP運行環(huán)境,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。