LNMP 虚拟主机方案增加CGI支持

Nginx 服务器默认并不支持 CGI,但是支持 FastCGI。这里有两种方法可以使 Nginx 支持 CGI。

1. 使用 Nginx 透明代理功能将所有的 cgi 请求全部代理到后台支持 CGI 的 Web Server 上。
2. 使用 CGI 的 FastCGI 封装器执行 CGI 程序。

先简单说一下第一种方法,在后台运行一个支持CGI的Web服务器,当时是越简单都好啦,使用反向代理把 /cgi-bin 的请求转发到后台的服务器上处理。这里我们使用第二种方法。

location /cgi-bin {
   include proxy.conf;
   proxy_pass 127.0.0.1:8000;
}

因为我们要用户权限分离,如果用第一种方法的话,需要为每个用户运行一个服务器或要求这个服务器可以用户分离。不如使用封装器,只要为每个用户运行一个封装器就可以,这里我们选择一个简单的封装器 FcgiWrap

1. 下载源代码 & 编译
下载地址:http://github.com/gnosek/fcgiwrap/tarball/master

sudo aptitude install libfcgi-dev  # 先安装 libfcgi 开发包
cd fcgiwrap
autoreconf
./configure
make

2. Nginx 虚拟主机配置,增加如下

location /cgi-bin {
		fastcgi_pass   unix:/var/web/username/run/fcgiwrap.socket;
		fastcgi_index  index.cgi;
		fastcgi_param  SCRIPT_FILENAME  /var/web/username/home/web/$fastcgi_script_name;
		include fastcgi_params;
	}

3. 运行 FcgiWrap

su username -c "/path/fcgiwrap -s unix:/var/web/username/run/fcgiwrap.socket"
chmod 666 /var/web/username/run/fcgiwrap.socket

Over!

4 thoughts on “LNMP 虚拟主机方案增加CGI支持”

Leave a Reply

Your email address will not be published. Required fields are marked *