Nginx: ограничение количества одновременных подключений на IP-сервер

мы используем nginx с сервером приложений в качестве бэкэнда.

нам нужно ограничить количество одновременных соединений на IP для бэкэнда. Мы использовали limit_conn директивы nginx для этой цели. Но не во всех случаях это работает хорошо. Если пользователь генерирует много соединений с одного IP и быстро их закрывает, то nginx передает этот запрос на серверную часть, но поскольку клиентское соединение уже закрыто, это соединение не учитывается в limit_conn.

можно ли ограничить количество одновременных подключений с одного IP на сервер с nginx?

2 ответов


Вы можете установить

proxy_ignore_client_abort off;

определяет, должно ли соединение с прокси-сервером быть закрыто, если клиент закрывает соединение, не дожидаясь ответа.

С документация

другое предложение-использовать limit_req для ограничения скорости запроса.


боюсь, что этот объект еще не доступен для nginx из коробки. Согласно nginx FAQ

многие пользователи запросили, чтобы Nginx реализовал функцию в нагрузке балансировщик для ограничения количества запросов на бэкэнд (обычно до одного). Хотя поддержка этого запланирована, стоит отметить, что спрос поскольку эта функция коренится в неправильном поведении со стороны приложение проксируется

Я видел некоторые сторонние модули для этого nginx-limit-upstream но я никогда не пробовал.