想拦截POST文件上传,用lua验证http头,如果通过才允许上传,试了一下lua-nginx-module无法实现。大家有好的办法吗?
--
邮件自: 列表“openresty”,专用于技术讨论!
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
详情: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
建议: 提问的智慧 http://wiki.woodpecker.org.cn/moin/AskForHelp
教程: http://agentzh.org/misc/nginx/agentzh-nginx-tutorials-zhcn.html
On May 14, 9:01 pm, agentzh <agen...@gmail.com> wrote:
> 2012/5/14 野马 <yuens...@gmail.com>:
这里的一个问题是,浏览器的工作方式一般是先发送请求,再处理响应。让浏览器立即停下来的方式便是断开连接 :)
在服务器端,按照 HTTP 协议的要求,只要不是协议层面的错误,就还是应该读取完所有请求数据(当然不一定保存,可以随读随扔),否则 HTTP
1.1 keepalive 和 pipelining 都有问题了。
Regards,
-agentzh
On May 14, 9:09 pm, agentzh <agen...@gmail.com> wrote:
> 2012/5/14 野马 <yuens...@gmail.com>:
>
即使 server 端不读取数据,客户端也会不断尝试发送数据(因为客户端会认为网络太差之类。。。)。
我已经说了,阻止客户端继续发请求数据的最有效的方式是断开连接(通过 ngx.exit(444) 或者 ngx.exit(ngx.ERROR))。
除非客户端足够聪明到一边尝试发送请求的同时一边接收和处理响应,并且在看到响应是出错页时自动停止发送数据。不过 HTTP
协议并没有要求这一点(其实也不允许这一点),所以这样聪明的客户端似乎不存在。
希望我已经把这个问题解释清楚了 :)
-agentzh
On May 14, 9:18 pm, agentzh <agen...@gmail.com> wrote:
> 2012/5/14 野马 <yuens...@gmail.com>:
>
这里的“不接收”有两种实现方法:
1. 使用 discard body 机制,随读随丢,正确返回错误页;
2. 立即返回错误页,同时断开连接,而不论错误页是否被客户端完整地接收到。
Regards,
-agentzh
On May 14, 9:25 pm, agentzh <agen...@gmail.com> wrote:
> 2012/5/14 野马 <yuens...@gmail.com>:
>
On May 14, 9:18 pm, agentzh <agen...@gmail.com> wrote:
> 2012/5/14 野马 <yuens...@gmail.com>:
>
> > 应该可以在接收完http header进行校验,来决定是否接受body吧。
>
> 即使 server 端不读取数据,客户端也会不断尝试发送数据(因为客户端会认为网络太差之类。。。)。
我做过实验,nginx可以阻塞住上传请求,等鉴权之后再继续读取body。这个过程中客户端不会继续发送数据过来。
--
邮件自: 列表“openresty”,专用于技术讨论!
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
详情: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
You should merge the new ngx.req API. Both can live in parallel.
But the new one has better performance for large post and supports Nginx native buffering to disk.
Regards,
Matthieu