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
Запросы. Я узнал об этом во время тестирования. Документация просто не упоминает об этом.