Nginx + fastcgi 简单实例

本文详细介绍了通用网关接口(CGI)及其改进版快速通用网关接口(FastCGI)的工作原理与配置方法。CGI允许客户端从网页向服务器程序请求数据,而FastCGI通过持续进程处理请求,显著提升效率,至少比CGI快5倍。文章还提供了简单的FastCGI实例,包括编译、部署及与Nginx集成的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考https://blog.csdn.net/allenlinrui/article/details/19419721

一、介绍

通用网关接口(Common Gateway Interface/CGI)描述了客户端和服务器程序之间传输数据的一种标准,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI 独立于任何语言的,CGI 程序可以用任何脚本语言或者是完全独立编程语言实现,只要这个语言可以在这个系统上运行。Unix shell script, Python, Ruby, PHP, perl, Tcl, C/C++, 和 Visual Basic 都可以用来编写 CGI 程序。

 

 

 

 

 

快速通用网关接口(Fast Common Gateway Interface/FastCGI)是通用网关接口(CGI)的改进,描述了客户端和服务器程序之间传输数据的一种标准。FastCGI致力于减少Web服务器与CGI程式之间互动的开销,从而使服务器可以同时处理更多的Web请求。与为每个请求创建一个新的进程不同,FastCGI使用持续的进程来处理一连串的请求。这些进程由FastCGI进程管理器管理,而不是web服务器。

 

 

 

 

 

 

 

 

 

 

由于 FastCGI 程序并不需要不断的产生新进程,可以大大降低服务器的压力并且产生较高的应用效率。它的速度效率最少要比CGI 技术提高 5 倍以上。它还支持分布式的部署, 即 FastCGI 程序可以在web 服务器以外的主机上执行。

 

总结:CGI 就是所谓的短生存期应用程序,FastCGI 就是所谓的长生存期应用程序。FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。

 

 

二、配置(待补充)

三、简单的hello实例

安装完成后,可以在任意文件夹中编写一个简单的cpp程序,比如cgi.cpp

 

 

 

 

编译g++ cgi.cpp -o cgidemo -lfcgi

 

将CGI可执行程序移动到nginx目录下cp cgidemo /usr/local/nginx/fastcgi_temp/cgidemo(没有fastcgi_temp文件夹的话自己创建)

 

启动spawn-fcgi管理进程,并绑定server IP和端口(不要跟nginx的监听端口重合)

/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 12345 -f /usr/local/nginx/fastcgi_temp/cgidemo

成功会显示

 

 

注:如果出现spawn-fcgi: child exited with: 0,是缺少while循环。

fastcgi代码要有应答循环过程,典型格式如下:

while (FCGI_Accept() >= 0) {//循环条件

  # 应答循环体

}

 

知道一个客户端请求来的时候FCGI_Accept块才执行,并返回0。如果有一个系统故障,或是系统管理员终止进程,Accept将返回-1。

如果应用程序作为一个CGI程序被调用,那么第一次调用Accept时,返回0,第二次总是返回-1,产生CGI行为。

 

 

更改/usr/lcoal/nginx/conf/nginx.conf配置文件,加入

 

 

重新加载nginx配置文件

/usr/local/nginx/sbin/nginx -s reload

 

访问http://100.100.181.80/cgidemo.cgi

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值