Использование nginx для перенаправления динамического запроса

У меня есть служба друидов, которая работает на моей локальной машине через порт 8082 следующим образом:

Method POST: http://localhost:8082/druid/v2/?pretty
Body:
{
  "queryType" : "topN",
  "dataSource" : "some_source",
  "intervals" : ["2015-09-12/2015-09-13"],
  "granularity" : "all",
  "dimension" : "page",
  "metric" : "edits",
  "threshold" : 25,
   "filter": {
    "type": "and",
    "fields": [
      {
        "type": "selector",
        "dimension": "pix_id",
        "value": "1234"
      }
  }
}

Выполнение этого запроса дает мне список записей на основе значения измерения «pix_id».

Теперь я хочу настроить nginx так, чтобы внешнее приложение не имело ни малейшего представления о моем сервисе друидов. Я просто хочу, чтобы внешнее приложение попало по URL-адресу:

http://localhost:80/pix_id/98765

Этот URL-адрес должен динамически генерировать JSON с вышеупомянутым pix_id и отправлять запрос druid и возвращать ответ пользователю.

Можно ли это сделать в nginx?


person Juvenik    schedule 18.06.2018    source источник


Ответы (1)


Да, вы можете это сделать, но я бы посоветовал использовать скрипт php или python между ними, чтобы получить результаты.

Таким образом, установка будет -

  1. Попросите php-страницу получить запрос.
  2. сделать вызов curl с php на друид, локально.
  3. получить результат и передать ответ.

Есть несколько преимуществ этого, например. -

  1. Вы полностью маскируете друида, и не обязательно ограничиваетесь друидом.
  2. Вы можете сделать больше вычислений в php, прежде чем отправлять запрос в druid.
  3. кеширование в конце php.
person mdeora    schedule 19.06.2018