Я получаю следующую ошибку в моих файлах журналов каждый раз, когда я пытаюсь загрузить большой файл.
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 сохранял содержимое тела во временном файле, вы можете установить свою конфигурацию. нравится:
Если вы установили обе эти конфигурации на одном и том же макс. размер (в k, M или G для кБ, МБ или ГБ соответственно), вы предотвратите, что NginX создаст темп. файл.
Для получения дополнительной информации: 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
источник
client_max_body_size
параметра. Смотрите информацию по этой ссылке: client_max_body_size doc. :Sets the maximum allowed size of the client request body, specified in the “Content-Length” request header field. If the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is returned to the client. Please be aware that browsers cannot correctly display this error. Setting size to 0 disables checking of client request body size.