Nginx入门经典教程之FastCGI+C/C++

发布时间:2020-01-29编辑:脚本学堂
本文介绍了nginx中FastCGI+C/C++的配置方法,Nginx入门经典教程之FastCGI+C/C++配置实例,有需要的朋友参考下。

nginx本身并没有集成fastcgi,但是可以通过配置来支持FastCGI,而对于FastCGI程序则需要一个FastCGI进程管理器来调度它。
关于FastCGI的详细可以参考:http://www.fastcgi.com/。

一、FastCGI进程管理器
可以使用lighttpd的一个子项目即spawn-fcgi来作为FastCGI进程管理器。

首先,下载spawn-fcgi-1.6.3。解压后执行如下命令来使编译和拷贝到Nginx可执行文件目录下:
 

复制代码 代码示例:
#./configure
#make
#cp ./src/spawn-fcgi /usr/sbin

相关阅读:Nginx学习笔记之有关FastCGI的知识

二、FastCGI程序开发库
编写FastCGI程序还需要FastCGI的库和头文件支持。
下载FastCGI库,解压后编译FastCGI库:
 

复制代码 代码示例:
#./configure
#make
#make install

由于FastCGI项目太老,而GCC更新又太快,所以可能会出现如下错误:
fcgio.cpp:50: error: 'EOF' was not declared in this scope
很简单,在include/fcgio.h中添加#include <cstdio>后,再次编译安装即可。

三、编写FastCGI程序
#cd /usr/local
#mkdir fastcgi
#vi helloFastCGI.c

nginx入门教程之fastcgi与c++

#g++ helloFastCGI.c -o helloFastCGI -L/usr/local/lib -lfcgi -Wl,-R /usr/local/lib
#./helloFastCGI

nginx入门教程之fastcgi与c++

四、启动FastCGI进程管理器
查看spwan-fcgi的命令参数信息:
#/usr/sbin/spawn-fcgi --help

启动spawn-fcgi:
#/usr/sbin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 25 -f /usr/local/fastcgi/helloFastCGI -F 1000
上面命令参数中,-p指定FastCGI进程管理器监听的端口号,-F指定spawn-fcgi将fork多少个child进程(之后Nginx对于此cgi的请求就可以并发处理了,这里是1000并发)。

关闭spawn-fcgi打开的fastcgi程序:
 

复制代码 代码示例:
#netstat -nap|grep 9000
#kill -9 PID

五、修改Nginx配置文件 (延伸阅读:nginx配置文件的简明说明  nginx配置文件详解

1)修改Nginx配置文件:
#vi /etc/nginx/nginx.cinf
 

复制代码 代码示例:
location ~ .cgi$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.cgi;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}

2)重新加载配置文件:
#kill -HUP PID

3)打开浏览器,输入http://localhost/x.cgi,就能看到如下显示说明成功了:   
 

Hello FastCGI !
Request number = [1]
Process ID: 2247

如此,nginx中FastCGI+C/C++的简单配置就完成了。