无效用户尝试POST大文件时如何关闭TCP连接?

时间:2011-11-10 21:30:26

标签: c++ nginx fastcgi

我使用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服务器。唔...

1 个答案:

答案 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/