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 но я никогда не пробовал.