http://blog.csdn.net/ablo_zhou
SCGI(Simple Common Gateway Interface),简单通用网关接口。是CGI的替代协议,与FastCGI相似,但更简单。据测试SCGI实现的效率比CGI和FastCGI更高,也更稳定。SCGI和CGI一样,分为客户端和服务器端。客户端放在http服务器侧。如apache有mod_scgi,lighthttpd有内置的SCGI支持。目前(2008.12.29)最新版本scgi 1.13, 服务器实现是python,但放在http服务器侧的客户端实现是C语言。
协议中,ASCII字符可以用< >括起来的16进制数字表示,也可以引号""括起来的ASCII表示。
报文由报头和报体组成。报头格式:
headers ::= header*
header ::= name NUL value NUL
name ::= notnull+
value ::= notnull*
notnull ::= <01> | <02> | <03> | ... | <ff>
NUL = <00>
报头中不允许重复命名。首个报头必须名为"CONTENT_LENGTH",
且其值为非空的ASCII数字序列,以十进制数形式给出了报文主体的长度。
"CONTENT_LENGTH"报头必须总是存在,即使其值为"0"。
同时必须始终有名为"SCGI"且值为"1"的报头。
为了便于从CGI的迁移,标准CGI环境变量应该作为SCGI报头提供。
报头采用Netstring编码。格式为“整个报文长度字符串:报头,报体”
如下的示例:
web服务器(一个SCGI客户端)打开一个连接,发送下面字符串的拼接:
"70:"
"CONTENT_LENGTH" <00> "27" <00>
"SCGI" <00> "1" <00>
"REQUEST_METHOD" <00> "POST" <00>
"REQUEST_URI" <00> "/deepthought" <00>
","
"What is the answer to life?"
这是一个Netstring编码的报头+报体。开头的70表示报文长度70个8位。<00>表示0结尾的字符串。用“,”隔开报头和报体。
SCGI服务器发送下面的响应:
"Status: 200 OK" <0d 0a>
"Content-Type: text/plain" <0d 0a>
"" <0d 0a>
"42"
<0d 0a>表示换行。
SCGI服务器关闭连接。
参考:
分享到:
相关推荐
5. **处理 SCGI 请求**:对于接收到的每个 SCGI 请求,解析其头部,提取请求方法、URL、协议版本等信息,并传递给相应的处理函数。 6. **响应生成**:根据请求生成相应的 HTTP 响应,包括状态码、头部和内容。 7. ...
标题中的"PyPI 官网下载 | scgi-2.1.tar.gz"表明这是一个在Python Package Index(PyPI)上发布的软件包,名为`scgi`,版本为2.1,且已经打包成tar.gz格式的压缩文件。PyPI是Python开发者发布和分享自己编写的Python...
ISAPI-SCGI是Internet Server Application Programming Interface (ISAPI)扩展和Simple Common Gateway Interface (SCGI)协议的一个实现,主要用于将IIS(Internet Information Services)Web服务器与后端FastCGI...
该库提供了对简单公共网关接口(SCGI)请求的解析。 SCGI是一种应用程序与HTTP服务器接口的协议,是CGI协议的替代协议。 它类似于FastCGI,但设计为易于实现。 实现SCGI的Web服务器包括Apache HTTP Server,Lighttpd...
#ScgiClient 用于 node.js node.js 的另一个 scgi 客户端模块。 与scgi-client相比,这个模块确实有更多的功能,但不能配置那么多。 它应该有更好的性能,但我还没有对其进行基准测试。 ##例子简单的例子: 有一个...
ISAPI SCGI扩展将对SCGI协议的支持添加到了Microsoft的Internet Information Server。 该扩展将多线程与I / O完成端口一起使用,以最大程度地减少内存和CPU使用率。
轻木SCGI 一个简单的 SCGI 侦听器,一个简单的线程阻塞 IO SCGI 服务器,可能对其他人有用。执照Balsa SCGI 版权所有 (c) 2012,Chris Ellis 保留所有权利。 如果满足以下条件,则允许以源代码和二进制形式重新分发...
Mr_SCGI 是一个轻量级库,它为用 C 编写的基于 Web 的应用程序提供 SCGI 服务器功能。它为请求检查、会话管理、cookie 和内存管理等设施提供了一个 servlet 容器样式的 API。
cscgi :C 的流式 SCGI 请求解析器。 作者: 安德烈·卡隆 接触: 描述 这个库为请求提供了一个解析器。 解析器作为有限状态机 (FSM) 实现,用于流应用程序(即数据以不可预测的速率到达并且解析器必须是可中断的...
名称Plack::Handler::AnyEvent::SCGI - AnyEvent::SCGI 上的 PSGI 处理程序概要 plackup -s AnyEvent::SCGI --port 22222描述Plack::Handler::AnyEvent::SCGI 是一个独立的 SCGI 守护进程,运行在。作者宫彦执照这个...
标题中的"Scgi.rar_绘图程序_C/C++_"表明这是一个使用C或C++语言编写的图形绘制程序,可能是一个库或者一个示例项目,它利用了SCGI(Simple Common Gateway Interface)协议。SCGI是一种网络协议,常用于将Web服务器...
关于proxy_store 的这个模块 | fastcgi_store | scgi_store | uwsgi_store 扩展,提供多个目录来动态存储和添加或删除目录。 (动态添加目录需要提前创建,目录权限必须是worker可以访问。)要求安装./configure --...
client_body_temp、conf、fastcgi.conf、fastcgi.conf.default、fastcgi_params、fastcgi_params.default、koi-utf、koi-win、mime.types、mime.types.default、nginx.conf、nginx.conf.default、scgi_params、scgi_...
xxm ... 该项目被编译成一个模块,以供Internet Explorer中的可插拔协议处理程序,ISAPI扩展,带有HTTPAPI,带有CGI或SCGI的Apache模块或独立的HTTP服务器使用。...SCGI服务器进程 ...(也许以后再说) 大多数处理
文件目录结构包括了`conf`目录下的配置文件,`sbin`目录下的可执行程序,以及`logs`目录用于存放运行时的日志文件,还有一些临时文件夹如`client_body_temp`、`proxy_temp`、`scgi_temp`和`uwsgi_temp`,它们分别...
十二、什么是C10K问题? C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。 十三、stub_status和sub_filter指令的作用 stub_status指令用于了解Nginx当前状态的当前状态,而sub_filter指令用于搜索和...
什么是 C10K 问题? 1. C10K 问题是指无法同时处理大量客户端(10,000)的网络套接字 请陈述 stub status 和 sub filter 指令的作用是什么? 1. Stub_status 指令:该指令用于了解 Nginx 当前状态的当前状态,如...