顺序执行啊,只让一个个过啊...
你用的参数不对吧,有个参数是可以装到 home 目录下的
一种是类似 supervisord[fcgi-program]
的办法,supervisord 以 root 运行,supervisord 去创建 socket 文件,把 socket 文件的 owner 设置成 nginx,mode 设置成 0700。spawn 应用的进程,把 socket 从fd 0
传进去。
另外一种是,应用自己起进程,socket 文件设置成 0777,accept 之后,用 getsockopt 拿到 client 的 uid,如果不是 nginx 直接拒绝掉。
#3 楼 @Saito 反正我那个 Server 就是直接 env['wsgi.input'] = socket.makefile('r')
的,跑了几个礼拜也没碰到过问题。其实只有在应用层你才知道这里到底该出现啥。
应用层处理应该更好一些,对于不需要处理的请求,就不浪费时间在把它写到临时文件上面了。
Server 不知道到底是参数还是 stream。而且,文件上传会是个 multipart,你还是需要从里面提取 POST 参数的。在 Server 这层做判断,按你的说法,multipart 既可能是 stream 也可能是 string,等于没判断。再考虑到可以有一些恶意的客户端的存在,你不能根据 header 来区别 body 的内容。
我咋觉得*sgi.input
默认就是直接把 HTTP 连接的 socket file 直接映射过去,啥也别做,至于后面咋处理是应用的事情,*SGI Server
不该干这件事,因为只有应用才知道这里应该是啥。
而且 CGI 就是直接把输入映射到标准输入的。
其实爆内存有难度的,HTTP Server 默认配置的上传大小是有限制的,实在不行自己设小一点嘛。当然,你不判断就把整个输入先读到内存里就是你的错了...
太复杂了,还是谁去开发个沙盒吧
把环境变量清空?
Fedora +1
#31 楼 @yedingding 其实早就知道有个现成的,除了主题怎么都不觉得靠谱,给 LZ 用可能正好合适 http://ajaxim.com/
#28 楼 @yedingding 所以现在没有能用的代码...
#24 楼 @yedingding 明显需要,不然我早放代码出来了。
#24 楼 @yedingding 人人的聊天可是有客户端的,且支持普通的 XMPP 客户端的
#21 楼 @yedingding 开多个 session 也是有问题的,虽说用 Ejabberd 写个 hook 挺容易的。但问题在于客户端,就是说有些客户端发消息的时候会指定 resource 的,这样就又是只会有一个标签页里的聊天栏会收到消息。
#19 楼 @willmouse 我是说,你得自己写代码了,这样就麻烦了。
#16 楼 @willmouse 说起来是很容易啊,但没有现成的实现啊。XMPP 里的 BOSH,根本就不是这么定义的,HTTP Session 和 XMPP Session 是 1:1 的,现成的代码能支持 BOSH 就已经很不错了,所以得自己写了。
#14 楼 @yedingding 比如你开了两个 GMail 标签页啊,只要你当前是在其中一个就可以回复了。GMail 倒不会经常开多个,但是人人网就难说了啊。
#9 楼 @yedingding 那不是很正常的啊,这是在普通页面上嵌入一个聊天栏,又不是你那单页应用,你当然要向所有标签页的聊天栏投递聊天消息了,不然消息来了,你让我先换标签页再能回复?
#4 楼 @yedingding 这个只是次要问题,这种类型的聊天最坑的地方在于,你要把聊天消息投递到所有标签页的聊天栏里面。接着,你就得去改别人的库和服务端实现。如果不是这样,其实 Ejabberd+Stroph.js 就够用了,根本就没多少要做的。
这个有点难度啊
加个 git hook 试试?