Чтобы виджет мог обращаться к модулю lbcore-rest, настройте обратное проксирование через Nginx либо Apache. Внешний адрес API должен быть доступен по HTTPS: этот адрес нужно будет указать в параметре apiUrl при настройке виджета.
127.0.0.1:8080 на том же сервере, что и Nginx или Apache. Если модуль находится на другом сервере, замените 127.0.0.1 его адресом. В примерах используется порт 8080. Если вы указали другой порт в конфигурации lbcore-rest (параметр listen секции [Server]), указывайте этот же порт и в настройках проксирования.443.При настройке замените значения из примеров (доменные имена и пути к сертификату и ключу) своими значениями. Если для основного домена HTTPS уже настроен, добавьте правила проксирования в его существующую HTTPS-конфигурацию.
Настройте Nginx либо Apache.
Добавьте блок server для поддомена API:
server {
listen 443 ssl;
server_name api.operator.ru;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
# Если lbcore-rest находится на другом сервере,
# укажите его адрес вместо 127.0.0.1.
proxy_pass http://127.0.0.1:8080;
}
}
В параметре apiUrl в настройках виджета нужно будет указать:
apiUrl: "https://api.operator.ru"
Добавьте location /api/ в HTTPS-блок основного сайта. Ниже показан фрагмент конфигурации: остальные настройки сайта нужно сохранить.
server {
listen 443 ssl;
server_name operator.ru;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
# Остальные настройки основного сайта.
location /api/ {
# Завершающий / удаляет внешний префикс /api/
# при передаче запроса модулю.
proxy_pass http://127.0.0.1:8080/;
}
}
В параметре apiUrl в настройках виджета нужно будет указать адрес с внешним префиксом:
apiUrl: "https://operator.ru/api"
Виджет добавляет к базовому адресу путь /api/v1/public-payment. Поэтому внешний запрос в этом примере будет направлен на https://operator.ru/api/api/v1/public-payment, а модуль получит путь /api/v1/public-payment. Первое /api — префикс прокси, второе — часть пути метода. Сохраните завершающий / в proxy_pass, чтобы внешний префикс удалялся.
Проверьте конфигурацию:
sudo nginx -t
Если проверка прошла успешно, перезагрузите конфигурацию Nginx. Например, в системе с systemd:
sudo systemctl reload nginx
Подробнее о настройке TLS — в документации Nginx.
Загрузите модули proxy, proxy_http и ssl. Например, в Debian:
sudo a2enmod proxy proxy_http ssl
Убедитесь, что Apache настроен на прослушивание порта 443. Если директива Listen 443 уже присутствует в конфигурации, добавлять её повторно не нужно.
Добавьте HTTPS-виртуальный хост для поддомена API:
<VirtualHost *:443>
ServerName api.operator.ru
SSLEngine on
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
ProxyRequests Off
# Если lbcore-rest находится на другом сервере,
# укажите его адрес вместо 127.0.0.1.
ProxyPass "/" "http://127.0.0.1:8080/"
ProxyPassReverse "/" "http://127.0.0.1:8080/"
</VirtualHost>
В параметре apiUrl в настройках виджета нужно будет указать:
apiUrl: "https://api.operator.ru"
Добавьте правила проксирования в HTTPS-виртуальный хост основного сайта. Ниже показан фрагмент конфигурации: остальные настройки сайта нужно сохранить.
<VirtualHost *:443>
ServerName operator.ru
SSLEngine on
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
# Остальные настройки основного сайта.
ProxyRequests Off
ProxyPass "/api/" "http://127.0.0.1:8080/"
ProxyPassReverse "/api/" "http://127.0.0.1:8080/"
</VirtualHost>
В параметре apiUrl в настройках виджета нужно будет указать:
apiUrl: "https://operator.ru/api"
Как и в примере Nginx, внешний путь /api/api/v1/public-payment передаётся модулю как /api/v1/public-payment: правило проксирования заменяет внешний префикс /api/ на /.
Убедитесь, что виртуальный хост включён. Проверьте конфигурацию и примените изменения. Например, в Debian с systemd:
sudo apache2ctl configtest
Если проверка прошла успешно:
sudo systemctl reload apache2
Команды включения модулей, виртуального хоста и управления службой зависят от операционной системы.
Подробнее — в документации Apache: настройка TLS и обратное проксирование.
Укажите полученный HTTPS-адрес в apiUrl:
| Вариант размещения | Значение apiUrl |
|---|---|
| Отдельный поддомен | https://api.operator.ru |
Префикс /api/ на основном домене |
https://operator.ru/api |
После настройки откройте страницу с виджетом и проверьте отправку запроса к API. В инструментах разработчика браузера убедитесь, что запрос отправляется по HTTPS и нет ошибок сертификата или соединения.
Если сайт с виджетом и API имеют разные источники, укажите источник сайта с виджетом в массиве cors секции [Server] файла конфигурации. Например, для страницы https://operator.ru/payment/ укажите cors = ["https://operator.ru"]. В этом параметре задаётся источник страницы (протокол, доменное имя и при необходимости порт), а не адрес API и не путь страницы. После изменения конфигурации перезапустите модуль.
Есть вопросы по документации? Пожалуйста, напишите их