Как оценить ограничение с помощью ключа 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.