X

Как исправить ошибку 413 Request Entity Too Large

При загрузке файла в свой блог, столкнулся с ошибкой "413 Request Entity Too Large". Быстрое гугление показало, что для исправления, нужно чуть поднастроить веб-сервер..

Что означает ошибка "413 Request Entity Too Large"

Ошибка "413 Request Entity Too Large" переводится как "Размер запроса слишком большой" возникает когда размер запроса от клиента превышает максимальные ограничения установленные для обработки на стороне веб-сервера. Такие ограничение применяют для защиты от атак направленных на увеличение нагрузки на веб-сервер.

Например, в моем случае, я попытался загрузить gif-ку размер которой был около 2 мб. Соответственно мой браузер отправил POST запрос на веб-сервер, примерно такого же размера. В результате я получил ошибку "Request entity too large" от веб-сервера, о том, что мой запрос слишком большой для дальнейшей обработки.

Как исправить ошибку "413 Request Entity Too Large" со стороны клиента

Самый простой способ, это уменьшить размер запроса. Тут многое зависит от того, что именно вы отправляете на сервер.

Если это форма с несколькими файлами, попробуйте загружать файлы по одному.

Если это какие-то документы и есть возможность, попробуйте их заархивировать.

Если это картинка, попробуйте её сохранить в другом формате, например уменьшить разрешение и сохранить в JPG.

У Вас Jpeg

Как исправить ошибку "413 Request Entity Too Large" на стороне Nginx веб-сервера

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

В nginx, за это отвечает опция client_max_body_size: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
Значение по-умолчанию: 1Мб

Данную опцию можно использовать в следующих контекстах: http, server, location. Т.е. можно задать глобальное значение, значение для домена и значение для конкретного адреса url.

Я решил увеличить глобальное значение, т.к. это исправит проблему сразу для нескольких блогов, расположенных в рамках одного сервера.

Для этого добавляем нужное значение (в моем случае это 16 Мб) в главный файл конфигурации

$ sudo nano /etc/nginx/nginx.conf

...
http {
    ...
    client_max_body_size 16M;
    ....
}

далее, проверяем конфигурацию и перезапускаем nginx

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ sudo nginx -s reload

Пример конфигурации в других контекстах

server {
    client_max_body_size 1m;

    location /users/profile/edit/avatar {
        client_max_body_size 2m;
        ...
    }

    location /users/profile/edit/images {
        client_max_body_size 5m;
        ...
    }
}

Как исправить ошибку "413 Request Entity Too Large" на стороне Apache веб-сервера

В Apache эта опция называется LimitRequestBody: https://httpd.apache.org/docs/2.4/mod/core.html#LimitRequestBody
По-умолчанию лимит не установлен (равен 0). Размер задается в байтах

Данную опцию можно использовать в следующих контекстах: server config, virtual host, directory, .htaccess. Т.е. можно задать глобальное значение, значение для домена, значение для конкретного url, а так же модифицировать его через .htaccess

Пример конфигурации VirtualHost

<VirtualHost *:80>

    # Small, safe default (1 MB)
    <Location />
        LimitRequestBody 1048576
    </Location>

    # 2 MB
    <Location /users/profile/edit/avatar>
        LimitRequestBody 2097152
    </Location>

    # 5 MB
    <Location /users/profile/edit/images>
        LimitRequestBody 5242880
    </Location>
</VirtualHost>

Пример изменения конфигурации в .htaccess

$ nano .htaccess

...
LimitRequestBody 5242880
...

Заключение

В современном мире знать и уметь все не возможно. Для решения повседневных проблем самое главное умение - это уметь искать нужную информацию в интернете. Если Вы это читаете, то у Вас все хорошо 🙂

Категории: Бездна