首页 > 代码库 > 深刻理解Nginx之Nginx与Python(1)

深刻理解Nginx之Nginx与Python(1)

6 Python和Nginx

6.1 介绍FastCGI

      FastCGI(Fast Common Gateway Interface)是基于CGI上的改进,是CGI的一种演变产物。尽管目的是保持相同的,FastCGI在CGI上提供了重大的提升,通过建立起下面的原则。

      l  代替对于每个请求孵化一个新进程,FastCGI采用持久化进程,伴随着能够处理多个请求的能力。

      l  Web服务器和网关应用程序通过使用sockets比如TCP或者POSIXT 本地IPC sockets来交流。其结果是,它们的          进程能够在一个网络上的两个不同的计算机上。

      l  Web服务器转向客户端请求道网关,在一个单一的连接中接受请求。额外的请求可能也伴随着不必创建一个额外的连接。注意到在大多数服务器上,包括Nginx和Apache,FastCGI的实现不支持多路复用(multiplexing)。

      l  既然FastCGI是一个基于socket协议,它能够在任何平台任以任何语言来实现。

    设计一个强大的FastCGI架构实际上不是如某人想象的那么复杂,只要你有一个Web服务器和一个正在运行的处理应用程序就可以了。唯一的难点就是保持去在两个组织间进行连接。

6.2 uWSGI 和 SCGI

     Nginx提供了两个其它基于CGI模块的实现。

     l  uWSGI模块允许Nginx去与应用程序以uwsgi协议进行交流,它本身源之于Web Server GatewayInterface(WSGI)。大部分一般使用服务器实现的是uwsgi协议,这不是uWSGI的原始名称。这个可以从它提供的最新文档(http://uwsgi-docs.readthedocs.org.)中可以知道。uWSGI 工程主要就是为Python应用程序而设计的。

      l  SCGI,代表着简单一般网关接口(SimpleCommon Gateway Interface),是一个CGI协议的变种,更像FastCGI。但是,比FastCGI更年轻,它的具体规范在2006年发布,设计SCGI是为了更容易去实现,正如它名字表达的一样:简单。它不与一种特殊的编程语言相关。

      FastCGI, uwsgi 和 SCGI的重大不同之处是它们的协议是不一样的,Nginx以模块将他们分开,下面一个表单将呈现对应关系。