Решения для управления API [закрыто]

В настоящее время я создаю API и ищу инструмент, позволяющий отслеживать (в GUI) и использование ограничения скорости. Я встречал несколько корпоративных решений, включая:

Корпоративный план Apigee - это именно то, что я ищу, но планы начинаются с от 3000 долларов в месяц, что выходит за рамки моего ценового диапазона. Все остальные решения либо слишком дороги, либо не обеспечивают то решение, которое я ищу.

Это побудило меня взглянуть на некоторые варианты с открытым исходным кодом, включая:

Varnish кажется довольно полным решением; однако мне нужно было бы создать графический интерфейс для визуализации данных.

Мой последний вариант - создать решение с нуля, используя EventMachine и ruby.

Что-нибудь посоветуете?

9
задан 29 April 2012 в 13:47
2 ответа

Я думаю, вы переоцениваете, насколько это сложно.

В вашем коде просто есть счетчик с redis / memcached / mongodb (счетчик 1/24 часа или почасовой / суточный счетчик в зависимости от ваших потребностей) и вернуть соответствующую ошибку, когда предел был достигнут. Вы можете либо увеличивать счетчики прямо здесь, либо делать это асинхронно при обработке ваших журналов.

Для отображения данных просто создайте простую веб-страницу, суммирующую счетчики по мере необходимости.

Для нашего использования нам не нужно точно ограничить вещи, поэтому мы обычно просто регистрируемся через нашу инфраструктуру журналов, и один из процессоров журналов (в режиме реального времени через писец) резюмирует подобные вещи. Результатом является простая HTML-страница с занятыми IP-адресами / клиентами, некоторая страница, которую nagios может отслеживать, и некоторые URL-адреса, с которых munin извлекает данные для построения графиков.

3
ответ дан 2 December 2019 в 22:37

You can use naxsi with nginx. just override your /requestDenied location with limit rules you need:

map naxsi redirect parameters to corresponding limit:

map $arg_uri $limit_uri {
  123.php   limit_zone1;
  234.php   limit_zone2;
default limit_default;
}

use limits in location:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
1
ответ дан 2 December 2019 в 22:37

Теги

Похожие вопросы