nginx、fastCGI、php-fpm关系梳理

还可以参考:http://www.cnblogs.com/skynet/p/4173450.html

 
前言:

  Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx才可以解析php脚本。那么,这样配置的背后原理是什么?nginx、fastCGI、php-fpm之间又有什么关系呢?博主一直有这样的疑惑,由于无法理清nginx、php-fpm之间的关系,遇到nginx解析不了php脚本的时候,往往不知所措,花费的问题排查时间也非常长。因此,特地抽时间了解这背后的原理,梳理了一下nginx、fastCGI、php-fpm之间的关系。
 
一、fastCGI?
  fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。
  fastCGI的优点:fastCGI采用C/S结构,可以将http服务器和动态脚本解析服务器分离(二者可以部署在不同的服务器上),让http服务器专一处理静态请求和转发动态请求到脚本解析服务器;脚本解析服务器则专一处理动态脚本的请求。
 
二、nginx+fastCGI
  nginx不支持对外部程序的直接调用或者解析,必须通过fastCGI进行调用。nginx收到CGI请求之后,fastCGI接口在脚本解析服务器上,启动一个或者多个守护进程对动态脚本进行解析。
 
三、php-fpm
  fastCGI进程管理器/引擎:即对动态脚本进行实际解析的守护进程,由fastCGI启动。这里,php-fpm就是支持解析php的一个fastCGI进程管理器/引擎。
 
总结:
  fastCGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解析php脚本,即php-fpm相当于一个动态应用服务器,从而实现nginx动态解析php。因此,如果nginx服务器需要支持php解析,需要在nginx.conf中增加php的配置:将php脚本转发到fastCGI进程监听的IP地址和端口(php-fpm.conf中指定)。同时,php安装的时候,需要开启支持fastCGI选项,并且编译安装php-fpm补丁/扩展,同时,需要启动php-fpm进程,才可以解析nginx通过fastCGI转发过来的php脚本
 
参考文章:
实战Nginx与PHP(FastCGI)的安装、配置与优化  (文章有非常详细的原理分析和配置参数说明,强烈推荐阅读)

nginx、fastCGI、php-fpm关系梳理(转载参考)的更多相关文章

  1. nginx、fastCGI、php-fpm关系梳理(转载 http://blog.sina.com.cn/s/blog_6df9fbe30102v57y.html)

        前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装 php-fpm扩展并启动php-fpm守护进程, ...

  2. nginx fastcgi php-fpm的关系梳理

    CGI(Common Gateway Interface)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具 ...

  3. nginx、fastCGI、php-fpm关系梳理(转)

    前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx ...

  4. nginx、fastCGI、php-fpm关系梳理

    前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx ...

  5. (转)nginx与PHP的关系

    php是一门编程语言,可以编写很多程序,但是只有php的话,你的php只能在你的服务器里孤立的运行,比如你用php写了一个可以通过身高计算人的标准体重的程序,虽然这个程序可以在服务器运行,但是他还不能 ...

  6. 记录一次自己对nginx+fastcgi(fpm)+mysql压力测试结果

    nginx + fastcgi(fpm) 压力测试: CentOS release 5.9 16核12G内存 静态页面: 并发1000,压测200秒,测试结果: 系统最大负载5.47 成功响应: 25 ...

  7. 转载:2.1 运行中的Nginx进程间的关系《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19624.html 在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,w ...

  8. Nginx + fastcgi + php 的原理与关系

    CGI:Common Gateway Interface 公共网关接口,web服务器和脚本语言通信的一个标准.接口.协议[协议] FastCGI:CGI协议的升级版[协议] PHP-CGI: 实现了C ...

  9. nginx+fastcgi+c/cpp

    参考:http://github.tiankonguse.com/blog/2015/01/19/cgi-nginx-three/ 跟着做了一遍,然后根据记忆写的,不清楚有没错漏步骤,希望多多评论多多 ...

随机推荐

  1. LeetCode 191. Number of 1 Bits Question

    题意:给你一个整数,计算该整数的二进制形式里有多少个“1”.比如6(110),就有2个“1”. 一开始我就把数字n不断右移,然后判定最右位是否为1,是就cnt++,否则就继续右移直到n为0. 可是题目 ...

  2. 【转】修改Android工程的名称、安装路径

    申明:转载自:http://blog.csdn.net/hcj116/article/details/21712353 在Google提供的Eclipse集成开发环境adt-bundle下修改名称的总 ...

  3. 【转】Devexpress使用之:GridControl控件(合并表头)

    Devexpress系列控件功能很强大,使用起来也不太容易,我也是边摸索边使用,如果有时间我会把常用控件的使用方法整理出来的. using System; using System.Collectio ...

  4. ViewPager顶部标题控件PagerSlidingTabStrip

    最近搞一个项目,要求做一个和网易新闻顶部菜单的滑动效果,如图: 顶部标题中下面有个红色的矩形小条,左右滑动时会跟随手势动态滑动,效果很绚丽,唉,特效啊! 自己搞了一上午无果,还是是github上找大神 ...

  5. 【足迹C++primer】46、动态存储类

    动态存储类 StrVec Class Design StrVec Class Definition class StrVec { public: //构造函数 StrVec():elements(nu ...

  6. 编译U-boot时,make[1]: *** 没有规则可以创建mkimage.o”

    执行完make smdk2440_config 对Uboot重行编译怎么会出现这样的错误 make[1]: Entering directory `/home/win/S3-ARM/Part4/ubo ...

  7. Linux的用户和组

    1. 查看配置文件/etc/shadow第一行中root账号的第三个字段(以':'分隔)中的数字,请算一下这个数字是怎么来的?距离1970年1月1日到上次更改密码的时间的间隔天数.例如root密码日期 ...

  8. Android AsyncTask学习

    Android程序有UI进程和后台进程,在执行一些耗时的操作时,如果在UI进程中,很可能出现假死的情况,用户体验会受到影响,因此,那些耗时进程往往就放在了后台进程中,用户体验能更好一些.网络情况不稳定 ...

  9. Oracle自动备份脚本

    set mydate=%date:~0,4%%date:~5,2%%date:~8,2%exp 用户名/密码@实例名 file=D:\mydata_%mydate%.dmp owner=用户名 log ...

  10. performSelector的方法

    在此我对performSelector系列方法进行了总结 1. - (id)performSelector:(SEL)aSelector; - (id)performSelector:(SEL)aSe ...