Перейти к содержанию

NGINX. Настройка конфигурации для получения HTTP-запросов в Comindware Platform

Введение

Здесь представлены инструкции по настройке конфигурации прокси-сервера NGINX для перенаправления HTTP-запросов в Comindware Platform при использовании подключения типа «Получение HTTP-запросов».

Подробные сведения по установке и настройке NGINX представлены на следующих сайтах:

См. также: - NGINX. Установка и настройка - Установка, запуск, инициализация и остановка ПО

Прикладная задача

В данном примере рассматривается настройка NGINX в качестве прокси-сервера для перенаправления HTTP-запросов из внешних систем в Comindware Platform:

  • имеется шаблон записи «Заказы» с атрибутами «Артикул товара» типа «Текст» и «Количество» типа «Число».
  • внешний сервер отправляет HTTP-запросы с искомым артикулом товара (squ) на порт 8123 NGINX;
  • NGINX должен перенаправлять запросы на порт 39135 Comindware Platform, где настроено подключение типа «Получение HTTP-запросов»;
  • Comindware Platform должна обрабатывать запросы и возвращать массив с данными заказов, содержащих указанный артикул товара, вида:

    "orders": [{ 
    "orderNumber": "string",
    "quantity": "number"
    }]

Создание конфигурации прокси-сервера NGINX

Внимание!

Для выполнения представленных здесь инструкций потребуется доступ к команде sudo.

  1. Откройте для редактирования файл конфигурации NGINX:

    sudo nano /etc/nginx/sites-available/proxy-service 

    Здесь proxy-service — имя файла конфигурации NGINX. Вы можете использовать собственное наглядное имя.

  2. Добавьте в файл следующие директивы:

    server { 
    listen 8123;
    server_name _;

    location /api/public/ {
    proxy_pass http://127.0.0.1:39135/;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # При необходимости снимите ограничение на размер тела запроса,
    # закомментировав эту директиву
    client_max_body_size 10M;
    }
    }

    Здесь:

    • listen 8123 — порт, на котором NGINX будет принимать HTTP-запросы. Этот порт указывается при отправке запросов из внешних систем, например: http://<your_host>:8123/api/public/get/request (<your_host> — URL-адрес вашего экземпляра Comindware Platform).
    • server_name _ — имя виртуального хоста. Значение _ используется как «хост по умолчанию» для запросов, имя сервера которых не совпадает ни с одним другим блоком server.
    • proxy_pass http://127.0.0.1:39135/ — адрес и порт Comindware Platform, на который NGINX будет перенаправлять запросы. Порт 39135 должен совпадать с портом, указанным при создании подключения типа «Получение HTTP-запросов» в Comindware Platform.
  3. Сохраните файл.

Включение конфигурации

  1. Создайте символическую ссылку на файл конфигурации в директории sites-enabled:

    sudo ln -s /etc/nginx/sites-available/proxy-service /etc/nginx/sites-enabled/ 
  2. Проверьте корректность конфигурации NGINX:

    sudo nginx -t 
  3. Если проверка прошла успешно, перезапустите NGINX:

    sudo systemctl restart nginx 

Настройка подключения в Comindware Platform

  1. На странице «Администрирование» выберите пункт «Инфраструктура» — «Подключения» .
  2. Создайте или откройте подключение типа «Подключения REST и OData» — «Получение HTTP-запросов».
  3. Настройте подключение:

    • Системное имя — введите уникальное имя подключения, например receiveHttpConnection.
    • Описание — введите наглядное описание подключения.
    • Запись в файловые журналы — выберите уровень журналирования событий получения запросов.
    • Путь URI — укажите путь, например orders, на который внешняя система будет отправлять запросы.
    • Порт — укажите порт 39135 (должен совпадать с внутренним портом, указанным в конфигурации NGINX).
    • Формат данных — выберите формат данных, например JSON.
  4. Нажмите кнопку «Проверить соединение» для проверки корректности настроек.

  5. Сохраните подключение.

Настройка пути передачи данных

  1. На странице «Администрирование» выберите пункт «Пути передачи данных» .
  2. Создайте или откройте путь передачи данных типа «Подключения REST и OData» — «Получение HTTP-запросов».
  3. На вкладке «Основные свойства» настройте:

    • Подключение — выберите созданное ранее подключение для получения HTTP-запросов.
    • Системное имя — введите уникальное имя пути передачи данных, например receiveHttpRoute.
    • Описание — введите наглядное описание пути передачи данных.
  4. На вкладке «Атрибуты сообщений» настройте структуру данных запроса и ответа:

    • Выберите тип сообщения «Обработка HTTP-запросов».
    • В таблице «Запрос» добавьте атрибуты, соответствующие структуре входящих HTTP-запросов. Например, для запроса с полем номера заказа orderNumber добавьте атрибут:
      • Системное имя: orderNumber
      • Тип: Строка
    • В таблице «Ответ» добавьте атрибуты для структуры ответа. Например, для ответа с массивом данных заказов:
      • атрибут orders типа «Объект» с установленным флажком «Массив».
        • внутри атрибут orders дочерние атрибуты:
          • id и product типа «Строка»;
          • quantity типа «Число».
  5. На вкладке «Интеграция» настройте:

    • Путь URI — укажите дополнительный путь, например request.

      Полный путь для отправки запросов будет составлен из компонентов, настроенных в подключении и пути передачи данных, например: http://<your_host>:8123/api/public/orders/request (<your_host> — URL-адрес вашего экземпляра Comindware Platform).

    • Атрибуты для десериализации данных — укажите $ в обоих столбцах для получения всей структуры JSON из запроса.

  6. Сохраните путь передачи данных.

Настройка сценария для обработки входящих сценариев

  1. Создайте новый сценарий.
  2. Настройте созданное по умолчанию событие «Нажатие кнопки»:

  3. Добавьте действие «Сменить контекст»:

    • Целевой шаблон записи: Заказы
    • Атрибут или выражение для поиска объектов: укажите выражение для выборки заказов по номеру:

      from a in db->Заказы where a->НомерЗаказа==$$orderRequest->orderNumber select a->id 

      Здесь:

  4. Добавьте действие «Изменить значения переменных»:

    • Операция со значениями переменных: заменить
    • Настройте переменные для передачи данных в запись:

      Имя переменной Значение
      orderNumber Атрибут «ID»
      quantity Атрибут «Количество»

Тестирование

  1. Отправьте HTTP-запрос из внешней системы на настроенный адрес NGINX, например:

    curl -X POST \ 
    -u username:password \
    -H "Content-Type: application/json" \
    -d '{
    "sku": "12345"
    }' \
    http://<your_host>:8123/api/public/orders/request \
    -v`

    Здесь:

    • -X POST — метод запроса (необязательный ключ);
    • -u username:password — базовая аутентификация c учётными данными аккаунта с разрешением на вызовы API Comindware Platform;
    • -H "Content-Type: application/json" — заголовок, указывающий на формат данных JSON;
    • -d '{"sku": "12345"}' — тело запроса с JSON-структурой, содержащей артикул искомого товара;
    • http://<your_host>:8123/api/public/orders/request — адрес NGINX с путём, настроенным в подключении и пути передачи данных (<your_host> — URL-адрес вашего экземпляра Comindware Platform);
    • -v — вывод отладочных данных (необязательный ключ).
  2. Проверьте обработку запроса. Comindware Platform должна вернуть данные заказов с запрошенным товаром, например:

    { 
    "orders": [
    {
    "orderNumber": "2235",
    "quantity": 10
    },
    {
    "orderNumber": "2236",
    "quantity": 5
    }
    ]
    }
К началу