Назад | Перейти на главную страницу

nginx - тело запроса клиента буферизуется во временный файл

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

a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001

Хотя файл загружается успешно, я всегда получаю указанную выше ошибку.

Я увеличил client_body_buffer_size к 1000m я ожидаю, что это будет самый большой загруженный файл. Однако это всего лишь предположение, и хотя я больше не получаю эту ошибку, мне интересно, подходит ли это значение для установки client_body_buffer_size?

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

Это предупреждение, а не ошибка. Вот почему это было предварено [warn] в журнале.

Это означает, что размер загруженного файла был больше, чем размер буфера в памяти, зарезервированного для загрузки.

Директива client_body_buffer_size контролирует размер этого буфера.

Если вы можете позволить себе иметь 1 ГБ оперативной памяти, всегда зарезервированной для периодической загрузки файлов, то это нормально. Это оптимизация производительности для буферизации загрузки в ОЗУ, а не во временном файле на диске, хотя при таких больших загрузках пара дополнительных секунд, вероятно, не имеет большого значения. Если большинство ваших загрузок небольшие, то, вероятно, это пустая трата.

В конце концов, только вы действительно можете решить, какой размер вам подходит.

Если вы не хотите, чтобы NginX сохранял содержимое тела во временном файле, вы можете установить свой config. как это:

    client_body_buffer_size     10M;
    client_max_body_size        10M;

Если вы установите для обеих этих конфигураций одинаковые макс. size (в k, M или G для kB, MB или GB соответственно), вы предотвратите создание NginX файла temp. файл.

Для получения дополнительной информации: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size и http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size