Apache LimitRequestBody - 对SSL /二进制数据没有影响

时间:2013-05-08 11:40:10

标签: apache http https

我有一个服务,在POST请求中接受附件作为多部分表单数据。我想限制服务器接受的附件大小以防止滥用。

但是我无法使Apache LimitRequestBody配置参数起作用。服务器总是接受我的请求 - 无论我配置什么。我希望在超过请求大小时抛出HTTP 413。

我的设置:负载均衡器 - > Apache(v2.2.12) - >码头

这是我的apache配置:

Listen 11443

<VirtualHost _default_:11443>
    LimitRequestBody 102400
    LimitXMLRequestBody 102400

    <Location /one/myapp>
        LimitXMLRequestBody 102400
        LimitRequestBody 102400
        SetEnv proxy-sendcl 1
        ProxyPass http://localhost:8080/myapp
        ProxyPassReverse http://localhost:8080/myapp
        Order Deny,Allow
        Allow from all
    </Location>

    ProxyPass /one http://localhost:8080
    ProxyPassReverse /one http://localhost:8080

    SSLEngine on
    SSLCertificateFile      ...host.cer
    SSLCertificateKeyFile   ...host.key
    SSLCertificateChainFile ...host.crt
    SSLProxyEngine on

</VirtualHost>

已安装(以及其他)mod-ssl和mod-qos。

我的请求如下:

POST https://myhost.com/one/myapp/myressource HTTP/1.1
Accept-Encoding: gzip,deflate
Authorization: ...
Accept-Language: en_US
Content-Type: multipart/form-data; boundary="----=_Part_16_248..."
MIME-Version: 1.0
User-Agent: Jakarta Commons-HttpClient/3.1
Host: myhost.com
Content-Length: 5760260


------=_Part_16_248...
Content-Type: application/octet-stream; name=data.raw
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="file"; filename="data.raw"

... (binary data) ...

为什么LimitRequestBody在我的情况下不起作用?

1 个答案:

答案 0 :(得分:0)

似乎指令LimitRequestBody不适用于代理请求。至少在我的案例中使用的2.2版本中没有。请参阅:https://issues.apache.org/bugzilla/show_bug.cgi?id=44758

问题似乎在更新的版本中得到修复。请参阅:http://svn.apache.org/viewvc?view=revision&revision=1066444

作为一种解决方法,我检查Content-Length标头的大小并拒绝分块请求。