SCGI – Simple Common Gateway Interface

升级 Nginx 时发现新版的 Nginx 有一个 SCGI 模块,试用了一下,感觉不错。

SCGI 协议是古老的 CGI 协议的替代方案,它是一个应用程序和 HTTP 服务器通信的接口协议。据说比 FastCGI 简单,效率相当,更容易实现。SCGI是C/S模型的,客户端在 HTTP 服务器一侧,基本C语言实现,服务器在应用程序一侧,目前有一个 Python 的服务器实现。

目前 Nginx, Apache, Lighttpd 都支持 SCGI 协议,在 Nginx 0.8.54 里试用操作。

虚拟主机配置文件
/etc/nginx/sites-enable/default

...
location /scgi {
        include scgi_params;
        scgi_pass localhost:4000;
}
...

SCGI 应用程序(服务器端)

#!/usr/bin/env python
# Heiher <admin@hiher.info>
 
import scgi;
import scgi.scgi_server;
 
class TestHandler(scgi.scgi_server.SCGIHandler):
	def produce(self, env, bodysize, input, output):
		output.write("Content-Type: text/plain\r\n\r\n");
		output.write("Test\r\n");
 
if __name__ == "__main__":
	server = scgi.scgi_server.SCGIServer(
			handler_class=TestHandler,
			port=4000);
	server.serve();

访问 SCGI 应用
浏览器中访问 http://localhost/scgi, 输出

Test

目前 PHP 还不支持这个协议,另外发现这个服务器端并不支持 UNIX Socket, 这样多用户虚拟主机的权限怎么控制呢?

Over!

Leave a Reply

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