Эта инструкция поможет вам настроить обратный прокси Nginx для работы с модулем Widget (модуль онлайн-продаж), используя SSL-сертификат.
Скачайте Nginx:
Перейдите на официальный сайт Nginx: https://nginx.org/en/download.html
Выберите последнюю стабильную версию для Windows.
Установите Nginx:
Распакуйте архив в удобное для вас место на компьютере. Например, C:\nginx.
Получите SSL-сертификат и ключ:
Вам потребуются файлы сертификата (.crt) и приватного ключа (.key). Если у вас их нет, вам нужно будет их получить от доверенного центра сертификации или создать самоподписанный сертификат (для тестирования).
Разместите файлы сертификата:
Создайте папку certs внутри папки, где установлен Nginx (например, C:\nginx\certs).
Поместите ваши файлы СЕРТИФИКАТ.crt и СЕРТИФИКАТ.key в эту папку certs.
Откройте файл конфигурации Nginx:
Найдите файл nginx.conf в корневой папке установки Nginx (например, C:\nginx\conf\nginx.conf). Откройте его в текстовом редакторе (например, Блокнот, Notepad++).
Внесите изменения в nginx.conf:
Найдите блок http и добавьте или измените существующий блок server согласно шаблону ниже.
Важно: Если у вас уже есть настроенный server блок, аккуратно внесите необходимые изменения, чтобы не нарушить другую конфигурацию.
server {
listen 443 ssl;
server_name ВАШ_DNS_ИМЯ; # Замените на ваше доменное имя
ssl_certificate certs/ВАШ_СЕРТИФИКАТ.crt; # Замените на имя вашего файла сертификата
ssl_certificate_key certs/ВАШ_КЛЮЧ.key; # Замените на имя вашего файла ключа
location / {
proxy_pass http://localhost:5200/; # Убедитесь, что порт 5200 совпадает с портом вашего виджета
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;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header "Connection" "";
proxy_pass_header Content-Type;
}
}
Пояснения к параметрам:
* `listen 443 ssl;`: Nginx будет слушать HTTPS-трафик на порту 443.
* `server_name ВАШ_DNS_ИМЯ;`: Укажите здесь ваше доменное имя, которое будет использоваться для доступа к виджету.
* `ssl_certificate certs/ВАШ_СЕРТИФИКАТ.crt;`: Путь к вашему файлу SSL-сертификата.
* `ssl_certificate_key certs/ВАШ_КЛЮЧ.key;`: Путь к вашему файлу приватного ключа.
* `location / { ... }`: - Этот блок определяет, как Nginx будет обрабатывать запросы, приходящие на корневой URL (`/`).
* `proxy_pass http://localhost:5200/;`: Nginx будет перенаправлять запросы на локальный сервер, работающий на порту 5200. **Убедитесь, что этот порт соответствует порту, на котором запущен ваш виджет.**
* `proxy_set_header ...`: Эти строки передают важную информацию о запросе к вашему виджету, включая исходный IP-адрес клиента и протокол.
nginx.conf.Запустите Nginx:
Откройте командную строку (cmd) от имени администратора.
Перейдите в папку, где установлен Nginx (например, cd C:\nginx).
Выполните команду: start nginx
Проверьте конфигурацию (рекомендуется):
Перед перезапуском или запуском Nginx, рекомендуется проверить синтаксис конфигурационного файла.
В командной строке, находясь в папке с Nginx, выполните: nginx -t
Если ошибок нет, вы увидите сообщения об успешной проверке.
Проверьте работу:
Откройте веб-браузер и перейдите по адресу https://*.ru/web/*/ (используя ваше доменное имя и наименование виджета).
Если все настроено правильно, вы должны увидеть ваш виджет, а браузер покажет, что соединение защищено SSL-сертификатом.
Убедитесь, что ваш виджет запущен и ожидает запросы на порту, указанном в proxy_pass (в примере это 5200). Nginx будет выступать в роли посредника, принимая HTTPS-запросы и передавая их вашему виджету по HTTP.
*P.S Порт белый IP:443 со внешней сети пробросить на внутренюю локальный IP:5200 (5200 в данном примере порт виджета).
Настройки Appsettings.json из боевого рабочего примера
"StaticFilesSettings": {
"IndexPath": "C:\\Program Files (x86)\\DataKrat\\Widget\\Widget v1.7.0\\Widgets",
"PublicPath": "C:\\Program Files (x86)\\DataKrat\\Widget\\Widget v1.7.0\\Widgets",
"ReturnServiceResponseIfError": false,
"SinglePageMode": true
},
> "Urls": "http://*:5200",
"Widgets": [
{
"AgreementUrl": "https://files.termealmare.ru/docs/oferta-termealmare.pdf",
"ApiAddress": "https://pay.termealmare.ru/v1/",
В строке Urls иногда требуется укзать локальный адрес вместо http://*:5200.