Nginx是一个高性能web服务器,但是由于它不能直接调用cgi程序,所以需要cgi管理进程的帮助,使用反向代理,将客户端的请求转发给固定的ip与端口,通过cgi管理进程监听端口后,就可以实现使用Nginx服务器来处理cgi程序。
现在的网页后台交互cgi大多采用PHP语言编写,配合php-fpm来使用。但是如果想用C/C++完成一个cgi呢?作为编程语言的元老,C/C++自然是可以完成这项任务的,但需要的不是php-fpm,而是使用spawn-fcgi来实现。
spawn-fcgi是实现cgi的主要程序,由于Nginx不能处理动态请求,于是将动态请求转发给spawn-fcgi处理。
但是spawn-fcgi处理的是fast-cgi,这跟cgi有啥区别呢?他们是一个东西么?
cgi
首先了解cgi是何物,他的官方名称是公共网关接口(Common Gateway Interface,CGI)。按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。
说人话就是可以配合前端的请求来实现与服务器的交互比如:数据库操作等。
每一次请求调用cgi时,都打开一个cgi进程,这样会浪费大量的创建、回收资源的时间与资源。访问少也就算了,一旦遇到一定规模的请求时,服务器简直想直接宕机,给它个痛快。
fast-cgi
由于每次请求cgi时都要创建进程,我直接给你开个进程或一