fcgiwrap
Table of Contents
1. fcgiwrap简介
FastCGI(快速通用网关接口)是语言无关的协议。
FastCGI 的工作模式和 Nginx 类似,分为 Master 进程和 Worker 进程。Master 进程主要用来监控 Worker 进程的运行;Worker 进程则是真正干活的进程,用来执行 CGI 程序,获取 CGI 程序的标准输出,再将其返回给支持 FastCGI 的 Web 服务器(如 Nginx 等)。
fcgiwrap 是个通用的 FastCGI 进程管理器。
1.1. 安装和启动fcgiwrap
安装 fcgiwrap:
$ sudo yum install fcgiwrap
启动 4 个 fcgiwrap worker 进程(也可以使用工具 spawn-fcgi 来启动 fcgiwrap,这里不介绍):
$ nohup sudo fcgiwrap -f -c 4 -s unix:/run/fcgiwrap.socket 2>&1 & $ sudo chown nginx:nginx /run/fcgiwrap.socket ## 修改监听套接字文件的 owner
2. nginx配置
Nginx 支持 FastCGI,本文介绍如何配置使得 Nginx 执行 Shell 程序。
假设 fcgiwrap 已经按上节介绍的步骤启动,并且监听在套接字文件 /run/fcgiwrap.socket 上。准备下面 Nginx 配置文件:
server { listen 80; server_name 192.168.1.100; root /home/www/public; index index.html; location ~* \.cgi$ { fastcgi_pass unix:/run/fcgiwrap.socket; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
准备下面cgi程序(/home/www/public/1.cgi):
#!/bin/bash printf "Content-Type: text/plain; charset=utf-8\r\n" printf "\r\n" printf "hello, world!\n" echo 'QUERY_STRING:' $QUERY_STRING
为上面文件增加可执行权限后。通过下面命令可以对其进行测试:
$ curl 192.168.1.100/1.cgi?k1=v1 hello, world! QUERY_STRING: k1=v1