В nginx есть следующая директива client_max_body_size
:
Устанавливает максимально допустимый размер тела клиентского запроса, указанный в поле заголовка запроса Content-Length. Если размер в запросе превышает настроенное значение, клиенту возвращается ошибка 413 (Request Entity Too Large).
Как говорится, это используется, когда в запросе указывается Content-Length. Я использую nginx в качестве обратного прокси. К сожалению, моя реализация nodejs для определенного URI требует, чтобы тело POST было предоставлено с Transfer-Encoding: chunked
- иначе сломается. Мне все еще нужно ограничить допустимый размер тела, чтобы предотвратить DoS. Я бы хотел, чтобы nginx закрыл соединение, если в теле было отправлено слишком много байтов.
Есть ли в nginx который функциональность? Или мне лучше реализовать это на сервере nodejs?
К счастью, client_max_body_size
на самом деле относится к Transfer-Encoding: chunked
Запросы. Я выяснил это во время тестирования. В документации об этом просто не упоминается.