一个典型的HTTP请求的处理流程是这样的:
1. 在浏览器中输入URL,发起HTTP 请求;
2. Web Server接收到请求,经过解析处理,传递给相应的logic程序;
3. Logic程序进行实际的业务处理,并将结果返回给Web Server;
4. Web Server将结果封装成HTTP响应包,返回给浏览器;
5. 浏览器解析展现响应结果。
其中,浏览器和web server之间的通信协议是HTTP,那么Web server和Logic脚本之间是怎么通信的呢?使用了什么样的协议?
这就是接下来要介绍的两个协议,cgi && fastCgi.
传统的CGI工作原理: Web Server将http body通过标准输入stdin和环境变量传递给Logic 程序,并启动此Logic程序进行处理,并将处理结果通过标准输出stdout返回给Web Server.
FastCGI vs CGI:
1. 与CGI的fork-and-execute方式不同,采用常驻进程池的方式来减少启动的巨大开销( fastcgi进程管理器,即FPM);
2. 与CGI中Web Server直接启动Logic 程序不同,使用socket方式与FPM进行交互,正因为基于socket通信方式,故Web Server和Logic程序可以分开部署。
网友评论