Внимание! Прокси-сервер nginx должен быть один на всю организацию (на все сервисы). Не обязательно его устанавливать на компьютер с программой "КМАЗС-ОФИС" либо "ПТК АЗС. ОФИС". Особенно это важно, если используется SSL (https), поскольку для https используются ключи шифрования, которые должны быть размещены в одном месте и они должны обновляться автоматически без участия оператора. В данной инструкции ВЕБ-ОФИС используется в качестве примера. При необходимости вместо сервиса ВЕБ-ОФИС можно указывать любые HTTP-сервисы, в том числе сервисы сторонных производителей. 1. Скачать сервер nginx, распаковать его в каталоге C:\Programs\nginx\ Убедиться, что файл nginx.exe находится в следующем каталоге: C:\Programs\nginx\nginx1_24\ Внимание! Вы можете распаковать nginx в любое место, но в таком случае вам будет сложнее следовать данной инструкции. 1.1 В составе nginx уже имеется настроенный файл конфигурации nginx.conf По умолчанию он настроен на http-порт 80. В нём необходимо прописать доменное имя сайта. Для этого открыть файл "nginx.conf" в блокноте и в секции http -> server изменить значение параметра server_name, например: server_name firma.ru www.firma.ru; Где firma - это условное название вашего сайта. 2. Для поддержки https нужно в секции http добавить ещё одну секцию server (вернее она там уже есть, нужно её раскомментировать), и там прописать всё тоже самое, только в строке listen должно быть указано: listen 443 ssl; 2.1 Не забыть про параметр server_name 3. Настроить nginx для проброса http-запросов в ВЕБ-ОФИС 3.1 В обеих секциях "server" (для портов 80 и 443) должна быть прописана команда проксирования: location /azs/ { proxy_pass http://127.0.0.1:85/; } Важно не ошибиться при указании "/", иначе запрос работать не будет (здесь используется магия сервера nginx, которая требует указания "/" в правильных местах)! Запрос из браузера содержащий участок /azs/, будет заменён на запрос к встроенному http-серверу (в ВЕБ-ОФИСЕ) без участка /azs/ Т.е. команда http://www.firma.ru/azs/StartKMAZS будет заменена на http://127.0.0.1:85/StartKMAZS где 85 - это порт встроенного http-сервера в ВЕБ-ОФИСЕ. Внимание! Если ВЕБ-ОФИС установлен на другом компьютере, то вместо 127.0.0.1 следует указать IP-адрес этого компьютера, а доступ к порту 85 потребуется разрешить в брандмауэре Windows. 3.2 Установить программу "ВЕБ-ОФИС КМАЗС" (с помощью инсталлятора), а затем установить службу "ВЕБ-ОФИС КМАЗС". Для этого нужно сперва запустить программу "КМАЗС-ОФИС" под администратором Windows, затем открыть окно "Настройки программы", перейти в раздел "Разное 2", выбрать "Использовать ВЕБ-ОФИС", разрешить использовать внутренний HTTP-сервер на порту 85. Затем нажать "ОК" для сохранения изменений. Затем снова открыть окно настроек и выполнить команду "Установить службу", а затем "Запустить службу". 3.2.1 Убедиться, что с локального компьютера работают запросы по адресу: http://127.0.0.1:85/StartKMAZS т.е. напрямую на встроенный HTTP-сервер, без nginx. 3.3 Запустить программу nginx.exe и убедиться в том, что запрос http://localhost/azs/StartKMAZS работает корректно. Должна загрузиться html-страница с формой для ввода логина и пароля. Хотя в параметре server_name мы не указали localhost, сервер nginx корректно обрабатывает такие запросы (видимо, в том случае, если в файле nginx.conf прописан только один сайт). 3.4 Убедиться, что работают обращения по http из "внешнего мира". Если не работает, значит нужно разрешить порт 80 в брандмауэре. Также может потребоваться выполнить проброс портов 80 и 443. 3.5 Остановить программу nginx (для этого запустить её ещё раз с параметром -s stop), например: nginx.exe -s stop 4. Выполнить настройки для работы с сертификатами https 4.1 Вручную создать папку "letsencrypt\.well-known\acme-challenge" внутри каталога "html", который находится в папке с файлами сервера nginx. 4.2 В файле nginx.conf в секции "server" для порта 80 должна быть прописана команда перенаправления: location /.well-known/acme-challenge/ { root html/letsencrypt; } 4.3 Внучную создать папку, в которой будут храниться файлы ключей, например "C:\site\keys" 4.4 В файле nginx.conf в секции "server" для порта 443 прописать файлы ключей: ssl_certificate C:\site\keys\firma.ru-crt.pem; ssl_certificate_key C:\site\keys\firma.ru-key.pem; Внимание! Этих файлов ещё нет (их сгенерирует программа WinACME). При этом имена файлов будут отличаться! Например, в имени файла может оказаться "www". 5. Необходимо скачать, распаковать архив и запустить утилиту WinACME 5.1 Необходимо выбрать вариант «M: Create certificate (default settings)» (ввести английскую букву "M" и нажать Enter) 5.2 На вопрос «How shall we determine the domain(s) to include in the certificate?» необходимо ответить «2: Manual input» 5.3 На запрос "Host:" необходимо указать доменное имя без "www" и с "www" через запятую, например: firma.ru,www.firma.ru 5.4 На запрос «Friendly name [Manual] firma.ru» нажать Enter 5.5 На запрос «How would you like prove ownership for the domain(s) in the certificate?» выбрать вариант «1: [http-01] Save verification files on (network) path» 5.6 На запрос "Path:" необходимо указать указать каталог, в котором находится папка ".well-known" (см. выше), например: C:\Programs\nginx\nginx1_24\html\letsencrypt 5.7 Далее на вопрос «Copy default web.config before validation?» нажать «Enter» (в этом случае файл web.config копироваться не будет) 5.8 На вопрос «What kind of private key should be used for the certificate?» следует указать «2: RSA key» 5.9 На вопрос «How would you like to store the certificate?» следует указать «2: PEM encoded files (Apache, nginx, etc.)» 5.10 На запрос "File path:" следует указать каталог, где будут размещены файлы ключей, например: C:\site\keys 5.11 На вопрос «Password to set for the private key .pem file» выбрать вариант «1: None» 5.12 На вопрос «Would you like to store it in another way too» выбрать «5: No (additional) store steps» 5.13 На вопрос «Which installation step should run first» выбрать вариант «3: No (additional) store steps» 5.14 Система произведёт следующие действия: 1) произведёт проверочные запросы и убедится в доступности каталога «.well-known/acme-challenge», если каталог доступен, то будет выдано сообщение «Autorization result: valid» 2) выполнит загрузку сертификата, затем сохранит pem-файлы заданном каталоге; 3) Создаст задание на автоматическое обновление сертификатов; 4) Напишет «Certificate XXXXXXX created» (сертификат создан). 5.15 Выполните команду Q: Quit (закрыть). Внимание! Вам больше не потребуется вручную запускать программу WinACME! 5.16 Зайдите в каталог "C:\site\keys\" и проверьте имена созданных pem-файлов. Если они отличаются от имён, который были указаны в файле nginx.conf (см. шаг 4.4), то необходимо исправить их имена в файле "nginx.conf". 6. Настроить автоматический запуск nginx в виде службы 6.1 Скачать WinSW-x64.exe и скопировать рядом с nginx.exe 6.2 Создать рядом файл srvnginx.xml со следующим содержимым (для случая, если nginx находится в папке "C:\Programs\nginx"): nginx nginx nginx C:\Programs\nginx\nginx1_24\nginx.exe C:\Programs\nginx\nginx1_24\srvc_log roll -p C:/Programs/nginx/nginx1_24 C:\Programs\nginx\nginx1_24\nginx.exe -p C:/Programs/nginx/nginx1_24 -s stop 6.3 Запустить srvnginx.exe с параметном install. При необходимости программа откроет окно повышения прав (ей требуются права администратора) 6.4 Открыть окно управления службами и убедиться, что появилась служба с названием nginx. Запустить её, если она не запущена.