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


9

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

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

Це змусило мене розглянути деякі варіанти з відкритим кодом, зокрема:

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

Мій остаточний варіант - створити рішення з нуля за допомогою EventMachine та ruby.

Будь-яка порада?


1
Майк. Я розробник Api Axle. Немає візуалізації статистики, але Axle поставляється з API, який повинен зробити його досить простою. Пінг мені, якщо ти думаєш, що я можу допомогти.
Філ Джексон

2
Я не перевіряв цього, але що робити з використанням nginx з redis та реалізацією такого алгоритму chris6f.com/rate-limiting-with-redis
hellvinz

Відповіді:


3

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

У своєму коді просто мати лічильник з червоним / запомненим / mongodb (лічильник 1/24 години або лічильник погодинного / щоденного, залежно від ваших потреб) та повернути відповідну помилку, коли ліміт буде досягнуто. Ви можете або збільшувати підрахунки прямо там, або робити це асинхронно під час обробки ваших журналів.

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

Для нашого використання нам не потрібно обмежувати речі точно, тому ми зазвичай просто входимо в систему своєї журнальної інфраструктури, і один із процесорів журналів (у режимі реального часу через скринь) підсумовує подібні речі. Вихід - це проста HTML-сторінка із зайнятими IP-адресами / клієнтами, деякою сторінкою, яку можуть відстежувати нагіоси, та деякими URL-адресами, з яких munin витягує дані для створення графіків.


1

Ви можете використовувати naxsi з nginx. просто перекрийте ваш / requestDenied location з потрібними правилами обмеження:

зіставити параметри переадресації naxsi до відповідного межі:

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

використовувати обмеження в розташуванні:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.