FastCGI介绍

什么是 CGI

CGI 的全称为“通用网关接口”(Common Gateway Interface),为 HTTP 服务器与其他机器上的程序服务通信交流的一种工具, CGI 程序须运行在网络服务器上。

传统 CGI 接口方式的主要缺点是性能较差,因为每次 HTTP 服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回给 HTTP
服务器。这在处理高并发访问时几乎是不可用的,因此就诞生了 FastCGI。另外,传统的 CGI 接口方式安全性也很差,故而现在已经很少被使用了。

什么是 FastCGI

FastCGI 是一个可伸缩地、高速地在 HTTP 服务器和动态服务脚本语言间通信的接口(在 Linux 下, FastCGI 接口即为 socket,这个socket 可以是文件 socket,也可以是IP socket),主要优点是把动态语言和 HTTP 服务器分离开来。多数流行的 HTTP 服务器都支持 FastCGI,包括 Apache 、 Nginx 和 Lighttpd 等。

同时,FastCGI也被许多脚本语言所支持,例如当前比较流行的脚本语言PHP。FastCGI 接口采用的是C/S架构,它可以将 HTTP 服务器和脚本服务器分开,同时还能在脚本解析服务器上启动一个或多个脚本来解析守护进程。当 HTTP 服务器遇到动态程序时,可以将其直接交付给 FastCGI 进程来执行,然后将得到结果返回给浏览器。这种方式可以让 HTTP 服务器专一地处理静态请求,或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高整个应用系统的性能。

FastCGI的重要特点如下:

  • HTTP 服务器和动态脚本语言间通信的接口或工具。
  • 可把动态语言解析和 HTTP 服务器分离开。
  • Nginx、Apache、Lighttpd,以及多数动态语言都支持 FastCGI。
  • FastCGI 接口方式采用 C/S 结构,分为客户端(HTTP 服务器)和服务器端(动态语言解析服务器)。
  • PHP 动态语言服务器可以启动多个 FastCGI 的守护进程(例如 php-fpm(fcgi process mangement))。
  • HTTP 服务器通过(例如 Nginx fastcgi_pass) FastCGI 客户端和动态语言 FastCGI 服务器端通信 (例如 php-fpm)。

转自《Web集群实战》

你可能感兴趣的:(FastCGI介绍)