Nginx本身并不支持对外部程序的直接调用或者解析,需通过FastCGI进行调用。Nginx收到CGI请求之后,转发到FastCGI接口在脚本解析服务器上启动一个或者多个守护进程对动态脚本进行解析。
FastCGI是http服务器(Nginx、Apache)和动态脚本语言(php)之间的通信接口。FastCGI采用C/S结构,可以将http服务器和动态脚本解析服务器分离(二者可以部署在不同的服务器上),让http服务器专一处理静态请求和转发动态请求到脚本解析服务器;脚本解析服务器则专一处理动态脚本的请求。PHP-FPM就是FastCGI进程管理器。
将Nginx和PHP部署到一台服务器上时,随着业务量增加,高并发下PHP处理不过来,考虑用一台10.11.2.3做Nginx服务器和FastCGI客户端,用两台10.11.2.4/5做FastCGI服务器。配置如下:
二、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 指向fastcgiservers
location ~ \.php$ {
fastcgi_pass fastcgiservers;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
三、10.11.2.4上的配置(10.11.2.5配置与之类似)
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
四、PHP代码脚本均上传到/var/www/html
10.11.2.4上测试PHP
echo "10.11.2.4";
phpinfo();
?>
10.11.2.5上测试PHP
echo "10.11.2.5";
phpinfo();
?>
在浏览器输入http://10.11.2.3时,刷新可见IP的变化,轮流在4和5上做解析
即PHP解析服务器上都放一套相同的代码,不清楚PHP具体是怎样一个解析过程。。