Como limitar o tamanho do arquivo carregado com LimitRequestBody e proxypass?


0

Desejo gerar um erro "Solicitar entidade muito grande" quando os usuários carregam arquivos muito grandes no meu servidor. Com o mod-php , isso é simplesmente:

<FilesMatch "^(upload|replace)$">
 LimitRequestBody 3000000
</FilesMatch>

Com php-fpm , eu tentei "

<LocationMatch "^/(upload|replace)$">
 LimitRequestBody 3000000
</LocationMatch>

Mas não funcionou. Em seguida, tentei definir uma variável de ambiente proxy em VirtualHost:

SetEnv proxy-sendchunked
ProxyPassMatch ^/([^\.]+)$ fcgi://127.0.0.1:9000${docroot}/$1

Também não funcionou. Alguém pode me dizer como conseguir isso? Obrigado.


httpd.apache.org/docs/2.2/mod/core.html#limitrequestbody "Nota: não aplicável a solicitações de proxy".
C4f4t0r 5/05

@ c4f4t0r, eles removeram essa nota no 2.4 .
Pergunta Overflow

httpd.apache.org/docs/2.4/mod/mod_proxy.html#request-bodies A nota não diz: LimitRequestBody só se aplica para solicitar corpos que o servidor irá Spool para disco
Victor Jerlin

1
pode ser um martelo muito grande para acertar esse prego, mas o mod_security pode fazer isso com SecRequestBodyLimit.
Rjewell

Respostas:


1

Seguindo a sugestão de @ rjewell, você precisará configurar o mod_security no seu proxy apache. Adicione as seguintes diretivas ao seu VirtualHost que devem ser protegidas:

# Enable request processing
SecRuleEngine On
# enable inspection of request bodies
SecRequestBodyAccess On
# set actual request size limit
SecRequestBodyLimit 3000000
# actually generate an HTTP error, instead of truncating
SecRequestBodyLimitAction Reject
# Avoid big request bodies that do not try to upload files
SecRequestBodyNoFilesLimit 1048576
# tune memory usage
SecRequestBodyInMemoryLimit 131072

Você pode ler mais sobre as diretrizes na referência de mod_security .

Dependendo do seu caso de uso, considere os seguintes pontos:

  • Aloque mais ou menos memória por solicitação de upload alterando o InMemoryLimit
  • Permitir solicitações maiores de não upload com o NoFilesLimit
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.