我使用http://www.fastcgi.com library + nginx web-server编写了一个简单的HTTP响应C ++程序。它的效果非常好。但我注意到fcgi的功能
int FCGX_Accept_r(FCGX_Request *request);
在将所有请求传输到服务器之前,不会返回。问题:我无法在文件传输完成之前分析URI中的参数:我想分析“?sid =”参数以拒绝来自无效用户的传输。允许任何人向服务器发送1GB文件会浪费带宽。
据我所知,Web服务器总是在新请求启动时通过FastCGI连接发送FCGI_BEGIN_REQUEST,然后是FCGI_PARAMS等。因此,在用户传输所有(可能不需要的和太大的)数据之前,最好对某些参数的内容作出反应
此外,我将阅读更多关于其FastCGI能力的nginx文档。
更新的 试图通过HTML格式向nginx发送2 GB文件+嗅探nginx和fastcgi之间的交换:nginx甚至没有尝试在所有2GB到来之前向FastCGI应用程序发送一个字节。所以,这种行为有点正常。如果你想要我所要求的功能,事实证明你应该开发自己的nginx模块或简单的web服务器。唔...
答案 0 :(得分:0)
我认为你可以控制:
location /xxx/upload {
access_by_lua '
//check cookie or something can recognize the req is valid or not
';
fcgi_pass XXXX;
}
检查此链接: http://openresty.org/