Nginx学习之fastCGI

一、什么是CGI

认识CGI

公共网关接口,Common Gateway Interface, 简称CGI,通俗来说就是跑在服务器上的一段程序。

cgi的处理步骤

1、通过Internet把用户请求送到Web服务器

2、Web服务器接收到用户请求并交给CGI程序

3、CGI程序把处理结果传送给Web服务器

4、Web服务器把结果送回到用户

以用户登录举例

Nginx学习之fastCGI_第1张图片

CGI程序是如何工作的:

1、web服务器(Nginx) , 收到一个请求

2、web服务器fork一个子进程,每处理一请求, 都会创建一个子进程

3、数据处理完成之后, 该cgi进程会被web服务器杀死

为什么要使用CGI

因为Nginx只能处理静态页面请求,动态请求比如说登录得交给别人处理。

二、fastCGI

为什么要使用fastCGI

因为普通的cgi有个弊端,就是处理每个请求都需要创建一个进程,并且处理完毕之后会马上销毁,这种频繁创建销毁进程的行为,效率太低,所以改用fastCGI,fastCGI处理请求,比如说上传图片,只创建一个进程,服务完一个请求之后就会阻塞,不会销毁,等待下一个请求,阻塞等待占用的资源还是比较少的。

使用fastCGI之前

使用fastCGI之前,得安装spawn-fcgi。Nginx通过spawn与fastCGI通信。

fastCGI工作流程

1、Nginx把请求发给spawn-fcgi,端口号是Nginx配置文件自己指定的。

2,、spawn-fcgi收到请求后,把数据转发给自己创建的子进程fastCGI进程,这个进程的程序是自己编写的,根据不同的业务编写不同的程序。

3、fastCGI进程处理完毕以后,再把回应请求发回spawn-fcgi,spawn-fcgi再转发给Nginx。

Nginx学习之fastCGI_第2张图片

Nginx的fastCGI配置

这是在Nginx.conf文件里配置的。

location /login{
            fastcgi_pass 127.0.0.1:10000;#fastCGI的IP和端口号
            include fastcgi.conf;#安装了fastCGI之后就会自带一个这个文件,一般不需要管,里面都是一些环境变量之类的
        }

spawn-fcgi的启动

启动命令

#spawn-fcgi -a IP -p 端口 -f fastcgi程序,比如下面这个
spawn-fcgi -a 127.0.0.1 -p 10000 -f ./bin_cgi/login#这里的IP和端口号得与Nginx配置文件一致,比如我上面的配置文件
#最后那个程序是我们自己编写的CGI程序

spawn-fcgi的退出

只能用kill命令杀死

你可能感兴趣的:(Linux)