什么是CGI?

CGI(Common Gateway Interface),即通用网关接口,是WWW技术中最重要的技术之一,是外部应用程序(即CGI程序)与WEB服务器之间的接口标准,负责在CGI程序和Web服务器之间传递信息。 CGI是Web服务器运行时,调用外部应用程序(即CGI程序,如nginx fast-cgi)的规范,CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的、新的交互式媒体,按照CGI编写的程序可以扩展Web服务器功能。

CGI应用程序 能通过Web服务器与浏览器进行交互,还可以通过数据库API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据,将数据格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中

所有Web服务器都支持CGI,我们可用多种语言编写CGI(包括流行的C、C ++等),只要这种语言具有标准输入、输出和环境变量。

什么是cgi 程序?
放置在服务器上的一段可执行程序。作为HTTP服务器的时候,客户端可以通过GET或者POST请求来调用这可执行程序。

客户端请求服务端的交互流程
在这里插入图片描述
php-fpm 工作原理
在这里插入图片描述
总结: 从以上两个图中可知道,当 客户端 发送一个请求(http://raytol.com/index.php)到 web服务器(nginx) 时,nginx 中的 fast-cgi 模块会将请求转发到 php-fpm,由 php-fpm 处理完将结果返回给 nginx fast-cgi ,再由 nginx fast-cgi 将数据返回给 客户端。

参考: 1、https://blog.csdn.net/liitdar/article/details/79896457 2、https://blog.csdn.net/z_ruitao/article/details/97976751 3、https://blog.csdn.net/renyongjian1994/article/details/86513816