Nginx自己並不支持對外部程序的直接調用或者解析,需經過FastCGI進行調用。Nginx收到CGI請求以後,轉發到FastCGI接口在腳本解析服務器上啓動一個或者多個守護進程對動態腳本進行解析。php
FastCGI是http服務器(Nginx、Apache)和動態腳本語言(php)之間的通訊接口。FastCGI採用C/S結構,能夠將http服務器和動態腳本解析服務器分離(兩者能夠部署在不一樣的服務器上),讓http服務器專注處理靜態請求和轉發動態請求到腳本解析服務器;腳本解析服務器則專注處理動態腳本的請求。PHP-FPM就是FastCGI進程管理器。html
將Nginx和PHP部署到一臺服務器上時,隨着業務量增長,高併發下PHP處理不過來,考慮用一臺10.11.2.3作Nginx服務器和FastCGI客戶端,用兩臺10.11.2.4/5作FastCGI服務器。配置以下:nginx
1、三臺服務器上都均安裝nginx和PHP
配置詳見 http://my.oschina.net/u/2404183/blog/552809瀏覽器
2、10.11.2.3上的配置服務器
vi /etc/nginx/nginx.conf 在http段添加併發
upstream fastcigservers {
server 10.11.2.4:9000;
server 10.11.2.5:9000;
}高併發
vi /etc/nginx/conf.d/default.conf將fastcgi_pass 指向fastcgiserversphp-fpm
location ~ \.php$ {
fastcgi_pass fastcgiservers;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}測試
3、10.11.2.4上的配置(10.11.2.5配置與之相似).net
vi /etc/php-fpm.d/www.conf
#listen = 127.0.0.1:9000
listen = 10.11.2.4:9000 #地址改成本機IP
#listen.allowed_clients = 127.0.0.1
listen.allowed_clients = 10.11.2.3 #地址改成nginx服務器IP
service php-fpm restart
4、PHP代碼腳本均上傳到/var/www/html
10.11.2.4上測試PHP
<?php
echo "10.11.2.4";
phpinfo();
?>
10.11.2.5上測試PHP
<?php
echo "10.11.2.5";
phpinfo();
?>
在瀏覽器輸入http://10.11.2.3時,刷新可見IP的變化,輪流在4和5上作解析
即PHP解析服務器上都放一套相同的代碼,不清楚PHP具體是怎樣一個解析過程。。