Включите nginx `client_body_in_file_only` только для метода PUT

Я создаю webdav-приложение с nginx в качестве внешнего интерфейса. Для уменьшения дисковых операций при загрузке я включаю client_body_in_file_only, Проблема в том, что это заставляет nginx записывать все тела запросов и замедляет небольшие запросы (например, запросы PROPFIND).

Есть ли способ сделать nginx client_body_in_file_only=on только для методов PUT?

1 ответ

Решение

Если $request_method равен "PUT", верните "588", который будет обрабатываться указанным блоком местоположения, который имеет client_body_in_file_only=on;,

server {

    error_page 588 = @saveinfile;

    if ($request_method = PUT) {
        return 588;
    }
    location / {

        # the usual stuff..
    }
    location @saveinfile {            
        client_body_in_file_only on;

        # the usual stuff..
    }

}
Другие вопросы по тегам