Nginx和PHP-fpm的关系
定义
CGI
通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了服务器和请求处理程序之间传输数据的一种标准
FastCGI
快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。
与CGI的区别 FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使服务器可以同时处理更多的网页请求。 FastCGI:进程池,而CGI针对每个请求都启动一个worker.
FPM
FastCGI进程管理器
php-cgi
PHP的解释器是php-cgi,php-cgi只是个CGI程序(cgi协议的解析器),他自己本身只能解析请求,返回结果,不会进程管理。
流程
模块
Apache模块(mod_php)
PHP解释器被嵌入在服务器上产生的每个Apache进程中。这样每个Apache工作人员都能够处理和执行PHP脚本本身,而不需要处理任何外部进程;
优点
由Apache执行的PHP代码。
无需外部过程。
PHP重量级网站的性能非常好。
PHP配置设置可以在.htaccess指令中定制。
缺点
使每个Apache进程足迹更大 - 意味着使用更多的RAM。
为非PHP内容加载PHP解释器。
PHP脚本创建的文件通常由Web服务器拥有,因此您以后无法通过FTP编辑它们。
CGI
使用CGI应用程序执行PHP脚本是在Web服务器上运行应用程序的传统方式,它效率很低且很少使用。它最初是在20世纪90年代推出的,但被认为效率太低,无法用于非小型站点以外的任何其他应用。在CGI上运行应用程序的一个好处是它可以将代码执行与Web服务器分离开来,从而增强了安全性。
优点 由于PHP代码执行与Web服务器隔离,因此安全性优于mod_php(以上)。
缺点 运行应用程序的传统方式。 表现非常差。
FastCGI
FastCGI是作为PHP Apache模块和CGI应用程序之间的中间地位而引入的。它允许脚本由Web服务器之外的解释器执行,包括CGI的安全优势,但不包括CGI的低效率。
优点 由于PHP代码执行与Web服务器隔离,从而提高了安全性。 静态内容将不会被PHP解释器处理。 允许您的FTP用户管理文件,而不会随后更改权限。
缺点 不能在.htaccess中使用PHP指令。这是许多流行的脚本所期望的。 需要从Web服务器传递PHP请求。
参考资料
Last updated