У нас есть HAProxy, работающий на нашем оборудовании pfSense, перенаправляющий единый интерфейс на несколько серверных служб (с использованием файлов cookie). Все отлично работает.
Мы хотели бы добавить в HAProxy базовое «ограничение скорости». В конфигурации Frontend я добавил
stick-table type ip size 100k expire 20s store http_req_rate(10s)
http-request track-sc0 src
http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }
Однако у одного из наших клиентов есть несколько сотен пользователей на одном сайте, и они подключаются к одному из наших приложений (что довольно «болтливо» с точки зрения сети) через прокси-сервер, поэтому запросы, попадающие на HAProxy, являются все с одного исходного IP. Все пользователи, как правило, заходят в приложение в одно и то же время дня, поэтому я опасаюсь устанавливать ограничение на количество новых подключений.
Хотя я осознаю, что это может быть ситуация «без выигрыша», есть ли какой-нибудь совет, как справиться с этим сценарием? Я мог бы, конечно, поднять ограничение скорости намного выше максимального уровня трафика, но мне кажется, что это снижает полезность любого ограничения скорости для предотвращения злонамеренных атак.
Я предполагаю, что у вас есть только варианты: использовать файлы cookie или, возможно (но маловероятно) заголовок x-forwarded-for. Вариант cookie будет аналогичен защите черной пятницы: http://www.loadbalancer.org/blog/black-friday-black-out-protection-with-haproxy/ Было бы очень интересно узнать, сможете ли вы получить рабочий пример проблемы, с которой столкнулись.