Можно ли ограничить скорость Kong на конечную точку?

Я могу настроить плагин ограничения скорости Kong, чтобы он налагал ограничения на каждую конечную точку в заданном API, как это :

$ curl -X POST http://kong:8001/apis/{api}/plugins \
    --data "name=rate-limiting" \
    --data "config.second=5"

Однако я хотел бы настроить различные ограничения скорости для каждой конечной точки. Например, я бы хотел разрешить:

  • http://localhost:8000/endpoint1, чтобы использовать ограничение скорости 5 запросов в секунду для каждого IP-адреса.
  • http://localhost:8000/endpoint2, чтобы использовать ограничение скорости 10 запросов в секунду на IP-адрес

Возможно ли это с Конгом? Я вижу открытую проблему, связанную с этим, но есть ли обходные пути?


person Jacob Wallace    schedule 20.11.2017    source источник


Ответы (3)


Не могли бы вы превратить каждую конечную точку в Kong API, а затем применить ограничение скорости для каждого API?

person Cooper    schedule 21.11.2017

До Kong .13 это было невозможно. Однако в Kong .13 API-объект был разбит на 2 части, routes и услуги.

Используя эти инструменты, вы сможете применять разные плагины для разных конечных точек в своем API.

person John Paul    schedule 19.04.2018
comment
Есть ли у вас какие-нибудь предложения, как это сделать? - person urgas9; 31.05.2018
comment
Конечно! Как правило, вы сначала добавляете службу для ваш апстрим API. Здесь будут маршрутизироваться входящие запросы. затем вы можете добавить маршрут, охватывает весь API и привязывает его к сервису. Затем просто добавьте другой маршрут для конечной точки, для которой требуется другое ограничение скорости. Наконец, добавьте ограничитель скорости ТОЛЬКО для маршрута, который вы добавили вторым. - person John Paul; 01.06.2018

Я считаю, что Kong не может работать в режиме IP. Но в конечном итоге у вас есть комбинация аутентификации и ограничения скорости. Комбинируя это, вы можете сказать

API 1 - limited to 5 request/second for consumer 1
API 1 (again) - limited to 10 request/second for consumer 2
API 2 - limited to 25 request/second from consumer 1

Для этого вам необходимо включить аутентификацию в конге для API, которыми вы хотите управлять, а затем назначить ставки для каждого потребителя / api.

Это даст вам возможность контролировать запросы потребителей, чтобы они не могли выполнять дополнительный запрос с нескольких IP-адресов. (Если хочешь)

person Shaleen    schedule 13.12.2017