Назад | Перейти на главную страницу

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?

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