Nginx+FastCGI運行原理
修改主配置文件,如下# vim/usr/local/nginx/conf/nginx.conf location / { root /www; index index.html index.htm index.php; } location ~ \.php$ { root /www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; include fastcgi_params; } //注:黑體www為web根目錄,改成對應目錄即可
location 定義文件類型, \.php$ 代表所有以 php 作為文件後綴的文件類型.
root 定義 php 文件存放的路徑, 當前以 "/www" 作為默認存放位置.
fastcgi_index 定義 php 文件類型中的默認索引頁
fastcgi_param SCRIPT_FILENAME 定義了頁面請求參數, 如客戶端需要訪問 /t1.php 則會自動讀取 /www/t1.php文件, 如客戶端訪問 / 則自動讀取 /www/index.php 文件
include 定義fastcgi 配置信息將會被保存到 /usr/local/nginx/conf/fastcgi_params 文件中
nginx最常用的方法是利用 tcp/ip 協議連接 phpfastcgi 接口, 因此要連接php必須先啟動fastcgi程序.
啟動方法:
# /usr/local/bin/php-cgi-b 127.0.0.1:9000 -c /usr/local/lib/php.ini &
-b 用於指定監聽地址與端口
如果想指定配置文件位置,可以使用-c選項
注意, nginx 服務器負責所有的客戶端請求, 包括了靜態網頁解析 (html), 頁面中的其他對象如 ccs文件jpg png文件等傳輸, 但遇到客戶需要請求 php 頁面請求或 php 源碼解析時, nginx將會把頁面傳遞到fastcgi接口, 由 php-cgi 程序進行解析.浏覽器測試:http://IP/index.php
當前php-cgi只啟用一個進程應答nginx所有連接中的php請求, 假如nginx具有一定的並發連接,那麼php-cgi 將會變得無法同時應付大量的工作, 並且返回網頁臨時不可用信息. 將會導致所有php連接無法返回數據結果,並返回錯誤信息。
為有效地解決php-cgi接口無法應答大量並發連接請求, 我們可以利用 spawn-fcgi或者php-fpm,稍後送上。