Возможно ли ограничить скорость на основе заголовков хоста? Т.е. не только на основе IP-адреса

Возможно ли ограничить скорость на основе заголовков хоста? Т.е. не только на основе IP-адреса

У меня есть конечная точка веб-сервиса, которую я создаю, где пользователи будут публиковать XML-файлы, и она будет сильно загружена более чем 1 тыс. запросов в секунду.

Теперь они отправляют эти XML-файлы через http post, но скорость большинства из них будет ограничена.

Проблема в том, что ограничение скорости будет осуществляться веб-приложением путем поиска source_id в xml, и если оно превысит x запросов в минуту, оно не будет обрабатываться дальше.

Мне было интересно, можно ли как-то выполнить проверку ограничения скорости на более раннем этапе обработки и таким образом предотвратить передачу файла размером 50 КБ по конвейеру на мои веб-серверы и потребление ресурсов.

Может ли балансировщик нагрузки каким-либо образом сделать вызов для проверки использования скорости?

Если это возможно, я мог бы поместить source_id в заголовок хоста, чтобы даже XML-файл не приходилось анализировать и загружать в память.

Можно ли просто просмотреть заголовки хоста и не загружать весь XML-файл размером 50 КБ в память?

Я действительно ценю ваши идеи, поскольку для этого требуются более глубокие знания всего стека TCP/IP и т. д.

решение1

Существует два основных типа возможностей:

1) Вы имеете дело с враждебными злоумышленниками, которые не будут сотрудничать с вашим дизайном. В этом случае, почему вас волнует, какой Hostзаголовок они отправляют? Ограничьте их скорость по IP.

2) Вы имеете дело с сотрудничающими клиентами, которые накладывают больше нагрузки, чем вы хотите. В этом случае просто примите запрос и отправьте им ответ, в котором им скажут отступить.

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

решение2

Вы можете заблокировать его через apache с похожими модулями. Или, если вы хотите вырезать его раньше, вы можете использовать сопоставление строк iptables, чтобы заблокировать вещи через регулярное выражение.

решение3

Это то, чтотккоманда/утилита для - это требует некоторой работы, но это стоит усилий. Я использую его для ограничения скорости передачи на сервер в DMZ за пределами нашей корпоративной локальной сети.

Вот несколько ссылок, которые помогли мне сориентироваться...

Фильтр Tc - Диапазоны портов Рассчитать значение маски: http://mailman.ds9a.nl/pipermail/lartc/2007q4/021739.html

Ограничение скорости для одного хоста или сетевой маски: http://lartc.org/howto/lartc.ratelimit.single.html

http://www.linuxquestions.org/questions/linux-networking-3/limit-bandwidth-rate-for-scp-using-tc-htb-linux-825684/

Связанный контент