Как оценить ограничение с помощью ключа API (Apache/nginx)

У меня есть API в PHP и я хочу ограничить его по разным уровням, причем разные уровни имеют разные ставки. Каждому пользователю будет назначен уровень и ключ API для использования в URL.

Например, это моя пользовательская настройка:

user_id api_key запросов / месяц запросов / минута
1           123456      10000               100
2 аааааа 2000                10
3           K3Jlkj3     10000               100

И запрос будет выглядеть так:

api.example.com/my/api/hello_world?api_key=123456 api.example.com/my/api/foo?api_key=aaaaaa Запросы, которые не имеют действительного ключа api_key, будут отклонены с 401.

Я нашел много материала об ограничении по IP-адресу, но ничего об ограничении скорости с помощью API-ключей параметров запроса. Я могу сделать это в самом приложении, но это кажется излишним, если веб-сервер может это сделать.

Это возможно с любым Apache (предпочтительно)? Есть ли хорошие уроки для такого рода вещей?

Изменить: Ну, я узнал, как это сделать через nginx ( https://stackoverflow.com/questions/46595754/use-nginx-rate-limiting-with-tokens), за исключением того, что nginx использует алгоритм Leaky Bucket, и это вместо этого понадобится Token Bucket.

0 ответов

Другие вопросы по тегам