歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Nginx支持php配置

Nginx支持php配置

日期:2017/2/27 15:59:38   编辑:Linux教程
Nginx本身是不支持對外部程序的直接調用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調用。FastCGI接口在 Linux下是socket,(這個socket可以是文件socket,也可以是ip socket)。為了調用CGI程序,還需要一個FastCGI的wrapper(wrapper可以理解為用於啟動另一個程序的程序),這個 wrapper綁定在某個固定socket上,如端口或者文件socket。當Nginx將CGI請求發送給這個socket的時候,通過FastCGI 接口,wrapper接納到請求,然後派生出一個新的線程,這個線程調用解釋器或者外部程序處理腳本並讀取返回數據;接著,wrapper再將返回的數據 通過FastCGI接口,沿著固定的socket傳遞給Nginx;最後,Nginx將返回的數據發送給客戶端。

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,稍後送上。

Copyright © Linux教程網 All Rights Reserved