Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

Есть два основных типа возможностей:

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

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

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

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

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

Tc Filter - Диапазоны портов Расчет значения маски: 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/

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