VDS с диском на 20гб, возможность загружать файлы размером пусть 100мб, возможность количества одновременных подключений 1000 клиентов.
А что если все они одновременно начнут загружать файл? Ну выполнять большой POST-запрос. nginx сохраняет его во временный файл, а дисковое пространство ограничено.
Пока POST-запрос не отправлен до конца, nginx не передаст его php-fpm, т.е. по сути мы имеем 1000 активных подключений, которые смеху ради поставились на паузу (ограничили скорость в 1кб) и потихоньку льют тебе файл на сервер.
И с точки зрения php ты ничего с этим сделать не сможешь, пока файл (POST) не придёт целиком, nginx не передаст его в работу на php-fpm, иначе было бы достаточно например сделать искусственное ограничение (на уровне приложения) в 10 пользователей, которые одновременно могут загружать файл.
Т.е. бэкед в этой ситуации вообще лох и ничего не может.
Поэтому такое ограничение необходимо установить на уровне nginx.
Как?
Смонтировать отдельную директорию, в виде отдельного файла (дискового образа) и когда там закончится место чтобы nginx выкидывал 50х ошибку клиенту? Чтобы место не закончилось на VDS, а в файле, клиенты всё равно будут страдать, а щито поделать...