Re: Не работает limit conn
Maxim Dounin
mdounin на mdounin.ru
Пн Июл 25 17:40:17 UTC 2011
Hello!
On Mon, Jul 25, 2011 at 11:14:00AM -0400, xganet wrote:
> Не работает limit_conn при f5 сервер падает
> Bad Gateway 502 , пример конфига:
Директива limit_conn позволяет ограничить количество одновременно
соединений с выполняющимися в них запросами, e.g. запретить
скачивание большого количества файлов одновременно. При нажатии в
браузере кнопки F5 - соединение будет приблизительно одно, т.е.
limit_conn'у делать будет нечего.
А вот во что у вас превратится бекенд от подобной нагрузки -
вопрос отдельный, и судя по всему он у вас превращается в тыкву.
Что в общем-то не удивительно - запрос получен, бекенд пошёл
работать, и обычно код на бекенде даже не пытается узнать, было ли
соединение закрыто.
Можно пытаться использовать proxy_ignore_client_abort (в этом
случае nginx будет ждать ответа бекенда даже если клиент закрыл
соединение, и limit_conn будет лучше отражать реальность с точки
зрения бекенда). Но правильнее и эффективнее защищаться от F5 с
помощью limit_req.
> http {
> limit_zone one $binary_remote_addr 10m;
> ...
> server {
> ...
> limit_conn one 25;
>
> location /download/ {
> ...
> }
>
>
> limit_req_zone работает, от f5 спасает, но от
> флуда не спасает, 1000-2000 коннектов с
> одного ip проходят и сервер в аут ((
Совмещайте. limit_req для защиты бекендов от нагрузки, limit_conn
для защиты от любителей качать много одновременно, accept-фильтры
и/или firewall - для защиты от атак типа slowloris.
Ну и про правильную настройку системы и nginx'а забывать не стоит.
Работать с worker_connections 1024 - можно, но не нужно; nginx без
проблем держит десятки тысяч соединений на одной машине,
достаточно его об этом попросить и систему соответствующим образом
настроить (читай: лимиты на количество файлов/сокетов поднять).
Maxim Dounin
Подробная информация о списке рассылки nginx-ru