nginx version: nginx/1.7.9
我在运行最新 OSX 的 Mac 上通过 macports安装了 nginx ( )。
我配置了一个 URI 来使用 SCGI:
location /server {
include /Users/ruipacheco/Projects/Assorted/nginx/conf/scgi_params;
scgi_pass unix:/var/tmp/rpc.sock;
#scgi_pass 127.0.0.1:9000;
}
当我在 上执行 GET 请求时127.0.0.1/server
,我在我的 SCGI 服务器上看到以下内容:
633:CONTENT_LENGTH0REQUEST_METHODGETREQUEST_URI/serverQUERY_STRINGCONTENT_TYPEDOCUMENT_URI/serverDOCUMENT_ROOT/opt/local/htmlSCGI1SERVER_PROTOCOLHTTP/1.1REMOTE_ADDR127.0.0.1REMOTE_PORT62088SERVER_PORT80SERVER_NAMElocalhostHTTP_HOST127.0.0.1HTTP_CONNECTIONkeep-aliveHTTP_CACHE_CONTROLmax-age=0HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,image/webp , / ;q=0.8HTTP_USER_AGENTMozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36HTTP_DNT1HTTP_ACCEPT_ENCODINGgzip, deflate, sdchHTTP_ACCEPT_LANGUAGEen-US,en;q=0。文件的
问题是网络字符串的长度 633 与解释不匹配。如果我正确理解了 netstrings规范,则 633 应该是第一个:
和最后一个之间的字符长度,
:
任何 8 位字节的字符串都可以编码为 [len]":"[string]","。这里 [string] 是字符串, [len] 是 ASCII 数字的非空序列,以十进制表示 [string] 的长度。ASCII 数字是 <30> 表示 0,<31> 表示 1,以此类推直到 <39> 表示 9。禁止 [len] 前面的额外零:[len] 以 <30> 开头,正好在 [ string] 为空。
例如,字符串hello world!
被编码为31 32 3a 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 2c
,即12:hello world!,
。
所以,我弄错了长度。这怎么解释?