Apache LimitRequestBody не действует при использовании ProxyPass

Я разрабатываю приложение на Django и использую gunicorn и apache для его развертывания. Приложение позволяет отправлять изображения в виде многокомпонентной формы.

Я создал механизм ограничения размера изображения и размеров на уровне Django. Я хотел бы ограничить размер файлов, которые передаются в Django на уровне Apache.

Изображения хранятся и извлекаются с помощью Django, поэтому apache не обслуживает и не хранит эти загруженные изображения.

Вот конфигурация apache:

<VirtualHost *:443>
    ServerName myserver.com
    ServerAdmin email@example.com

    # limit size of the body to 10mb
    LimitRequestBody 10485760

    Alias "/static" "/path/to/static/"
    <Directory /path/to/static/>
            Require all granted
    </Directory>
    ProxyPass /static !

    # set this header to allow gunicorn to know if request is https or not
    RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8500/ 
    ProxyPassReverse / http://127.0.0.1:8500/


    SSLEngine on
    SSLCertificateFile /path/to/certificate.pem
    SSLCertificateKeyFile /path/to/privatekey.pem


    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{ms}T" combined_with_time
    CustomLog ${APACHE_LOG_DIR}/path/to/logs/access.log combined_with_time
    ErrorLog ${APACHE_LOG_DIR}/path/to/logs/error.log
</VirtualHost>

При предоставленной конфигурации apache я ожидал, что при загрузке файла размером более 10мб (я использую файл размером около 200мб для тестирования) apache вернет сообщение 413 Request Entity Too Large. Но файл попадает на мой сервер по адресу http://127.0.0.1:8500/, потому что Django обрабатывает ответ.

Насколько я понимаю, в документации https://httpd.apache.org/docs/2.4/mod/core.html#limitrequestbody ничего не говорится о файлах, поэтому я предположил, что это ограничение будет влиять на загрузку файлов.

В этом сообщении https://stackoverflow.com/questions/16439722/apache-limitrequestbody-no-effect-on-ssl-binary-data говорится, что LimitRequestBody не применяется к проксированным запросам в версии 2.2, но это ограничение было снято в версии apache 2.4, которую я использую.

Вернуться на верх