client_body_in_file_only
Директива `client_body_in_file_only` управляет тем, сохраняется ли тело запроса только в файл. — NGINX HTTP Core
Описание
Директива `client_body_in_file_only` в NGINX используется для управления поведением сохранения тел запросов клиентов, когда `client_body` установлен в файл. Директива позволяет указать, должно ли тело запроса сохраняться исключительно в файл вместо обработки напрямую в оперативной памяти. Директива принимает аргумент `on` или `off`: при `on` тело запроса сохраняется во временный файл, а при `off` файловое хранилище для тела запроса не используется и оно обрабатывается напрямую в памяти. При включении это особенно полезно в сценариях, где ожидаются большие загрузки, так как предотвращает чрезмерное потребление памяти сервером, что может привести к ухудшению производительности. Кроме того, временный файл может служить механизмом для асинхронной обработки больших тел, что позволяет более эффективно использовать ресурсы. Вы можете размещать эту директиву в контекстах `http`, `server` или `location`, обеспечивая гибкость конфигурации в зависимости от архитектурных потребностей вашего приложения. Однако важно убедиться, что для каталога, в котором сохраняются файлы, установлены достаточные права доступа, чтобы избежать неожиданных ошибок. Когда эта директива отключена, любой запрос с телом будет обрабатываться в памяти, что может быть непригодно для запросов с большими телами и повышает риск исчерпания ресурсов сервера в условиях высокой нагрузки.
Пример конфига
location /upload {
client_body_in_file_only on;
client_max_body_size 10M;
# other configurations
}Использование `client_body_in_file_only on` требует соответствующих прав файловой системы для записи временных файлов, что может привести к ошибкам при неправильной настройке.
Последующая обработка тел запросов в NGINX должна учитывать хранение в файлах, поскольку это может изменить способ обработки загрузок или форм.