Nginx: отключить, когда клиент отправляет фрагментированное тело, размер которого превышает желаемый

В 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?

1 ответ

Решение

К счастью, client_max_body_size на самом деле относится к Transfer-Encoding: chunked Запросы. Я узнал об этом во время тестирования. Документация просто не упоминает об этом.

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