NGINX. Настройка конфигурации для получения HTTP-запросов в Comindware Platform
Введение
Здесь представлены инструкции по настройке конфигурации прокси-сервера NGINX для перенаправления HTTP-запросов в Comindware Platform при использовании подключения типа «Получение HTTP-запросов».
Подробные сведения по установке и настройке NGINX представлены на следующих сайтах:
- http://nginx.org/ru/docs/beginners_guide.html
- https://ruvds.com/ru/helpcenter/kak-nastroit-nginx-na-ubuntu-20-04/
- https://webdevblog.ru/bezopasnost-nginx-kak-uluchshit-konfiguraciju-vashego-servera/
См. также: - NGINX. Установка и настройка - Установка, запуск, инициализация и остановка ПО
Прикладная задача
В данном примере рассматривается настройка NGINX в качестве прокси-сервера для перенаправления HTTP-запросов из внешних систем в Comindware Platform:
- имеется шаблон записи «Заказы» с атрибутами «Артикул товара» типа «Текст» и «Количество» типа «Число».
- внешний сервер отправляет HTTP-запросы с искомым артикулом товара (
squ) на порт8123NGINX; - NGINX должен перенаправлять запросы на порт
39135Comindware Platform, где настроено подключение типа «Получение HTTP-запросов»; -
Comindware Platform должна обрабатывать запросы и возвращать массив с данными заказов, содержащих указанный артикул товара, вида:
"orders": [{"orderNumber": "string","quantity": "number"}]
Создание конфигурации прокси-сервера NGINX
Внимание!
Для выполнения представленных здесь инструкций потребуется доступ к команде sudo.
-
Откройте для редактирования файл конфигурации NGINX:
sudo nano /etc/nginx/sites-available/proxy-serviceЗдесь
proxy-service— имя файла конфигурации NGINX. Вы можете использовать собственное наглядное имя. -
Добавьте в файл следующие директивы:
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.
-
Сохраните файл.
Включение конфигурации
-
Создайте символическую ссылку на файл конфигурации в директории
sites-enabled:sudo ln -s /etc/nginx/sites-available/proxy-service /etc/nginx/sites-enabled/ -
Проверьте корректность конфигурации NGINX:
sudo nginx -t -
Если проверка прошла успешно, перезапустите NGINX:
sudo systemctl restart nginx
Настройка подключения в Comindware Platform
- На странице «Администрирование» выберите пункт «Инфраструктура» — «Подключения» .
- Создайте или откройте подключение типа «Подключения REST и OData» — «Получение HTTP-запросов».
-
Настройте подключение:
- Системное имя — введите уникальное имя подключения, например
receiveHttpConnection. - Описание — введите наглядное описание подключения.
- Запись в файловые журналы — выберите уровень журналирования событий получения запросов.
- Путь URI — укажите путь, например
orders, на который внешняя система будет отправлять запросы. - Порт — укажите порт
39135(должен совпадать с внутренним портом, указанным в конфигурации NGINX). - Формат данных — выберите формат данных, например JSON.
- Системное имя — введите уникальное имя подключения, например
-
Нажмите кнопку «Проверить соединение» для проверки корректности настроек.
- Сохраните подключение.
Настройка пути передачи данных
- На странице «Администрирование» выберите пункт «Пути передачи данных» .
- Создайте или откройте путь передачи данных типа «Подключения REST и OData» — «Получение HTTP-запросов».
-
На вкладке «Основные свойства» настройте:
- Подключение — выберите созданное ранее подключение для получения HTTP-запросов.
- Системное имя — введите уникальное имя пути передачи данных, например
receiveHttpRoute. - Описание — введите наглядное описание пути передачи данных.
-
На вкладке «Атрибуты сообщений» настройте структуру данных запроса и ответа:
- Выберите тип сообщения «Обработка HTTP-запросов».
- В таблице «Запрос» добавьте атрибуты, соответствующие структуре входящих HTTP-запросов. Например, для запроса с полем номера заказа
orderNumberдобавьте атрибут:- Системное имя:
orderNumber - Тип:
Строка
- Системное имя:
- В таблице «Ответ» добавьте атрибуты для структуры ответа. Например, для ответа с массивом данных заказов:
- атрибут
ordersтипа «Объект» с установленным флажком «Массив».- внутри атрибут
ordersдочерние атрибуты:idиproductтипа «Строка»;quantityтипа «Число».
- внутри атрибут
- атрибут
-
На вкладке «Интеграция» настройте:
-
Путь URI — укажите дополнительный путь, например
request.Полный путь для отправки запросов будет составлен из компонентов, настроенных в подключении и пути передачи данных, например:
http://<your_host>:8123/api/public/orders/request(<your_host>— URL-адрес вашего экземпляра Comindware Platform). -
Атрибуты для десериализации данных — укажите
$в обоих столбцах для получения всей структуры JSON из запроса.
-
-
Сохраните путь передачи данных.
Настройка сценария для обработки входящих сценариев
- Создайте новый сценарий.
-
Настройте созданное по умолчанию событие «Нажатие кнопки»:
- Тип: получение сообщения
- Контекстный шаблон: Заказы
- Подключение: выберите созданное подключение для получения HTTP-запросов
- Путь передачи данных: выберите созданный путь передачи данных
- Имя переменной: укажите имя переменной для хранения входящего запроса, например
orderRequest
-
Добавьте действие «Сменить контекст»:
- Целевой шаблон записи: Заказы
-
Атрибут или выражение для поиска объектов: укажите выражение для выборки заказов по номеру:
from a in db->Заказы where a->НомерЗаказа==$$orderRequest->orderNumber select a->idЗдесь:
$$orderRequest— переменная из события «Получение сообщения»orderNumber— атрибут сообщения, настроенный в пути передачи данных входящего HTTP-запроса.
-
Добавьте действие «Изменить значения переменных»:
- Операция со значениями переменных: заменить
-
Настройте переменные для передачи данных в запись:
Имя переменной Значение orderNumberАтрибут «ID» quantityАтрибут «Количество»
Тестирование
-
Отправьте 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— вывод отладочных данных (необязательный ключ).
-
Проверьте обработку запроса. Comindware Platform должна вернуть данные заказов с запрошенным товаром, например:
{"orders": [{"orderNumber": "2235","quantity": 10},{"orderNumber": "2236","quantity": 5}]}
Эта статья была полезна 1 чел.