Я получаю следующую ошибку в моих файлах журнала каждый раз, когда пытаюсь загрузить большой файл.
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