|
<< Показать Оглавление >> Настройка при работе с несколькими серверами |
![]()
|
Приведённые настройки подразумевают, что nginx находится на одном хосте c Dictation Server. |
Для настройки шифрования в системе с несколькими серверами и балансировщиком нагрузки nginx требуется установить перед каждым сервером и перед балансировщиком.

Схема работы многосерверной системы с шифрованием
Так как hop-by-hop заголовки (в том числе Upgrade и Connection) не передаются от клиента к проксируемому серверу, то проксируемый сервер не узнает о намерении клиента сменить протокол с REST на WebSocket. Все заголовки следует передать явно.
Значение параметра $connection_upgrade определяется в map-е.
Обратите внимание, что в приведённых примерах потребуется заменить:
•[Certs] на сертификат в формате .crt;
•[Key] на ключ в формате .key;
•Доменное имя dct-bal.local на доменное имя или IP-адрес балансировщика нагрузки;
•Доменное имя dct-srv-01.local на доменное имя или IP-адрес проксируемого сервера Voice2Med.
Настройка nginx балансировщика нагрузки
Пример конфигурационного файла nginx, используемого для проксирования обращений к балансировщику v2m-bal.local:
#user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
# Изменение параметра $connection_upgrade в зависимости #
# от значения $http_upgrade #
# https://nginx.org/ru/docs/http/websocket.html #
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 39260 ssl;
server_name dct-bal.local;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate [Certs];
ssl_certificate_key [Key];
location / {
proxy_pass http://localhost:39255;
auth_basic off;
allow all;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
Настройка nginx серверов Voice2Med
Пример конфигурационного файла nginx, используемого для проксирования обращений к каждому серверу на примере первого сервера dct-srv-01.local:
#user nobody;
worker_processes auto;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
sendfile on;
keepalive_timeout 65;
upstream backend_ws {
least_conn;
server 127.0.0.1:34000;
}
upstream backend_rest {
least_conn;
server 127.0.0.1:39255;
}
server {
listen 34001 ssl;
server_name dct-srv-01.local;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate [Certs];
ssl_certificate_key [Key];
location / {
proxy_pass http://backend_ws;
proxy_http_version 1.1;
proxy_buffering off;
proxy_read_timeout 7d;
proxy_send_timeout 7d;
tcp_nodelay on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 39257 ssl;
server_name dct-srv-01.local;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate [Certs];
ssl_certificate_key [Key];
location / {
proxy_pass http://backend_rest;
auth_basic off;
allow all;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Настройка Dictation Server
Для каждого сервера внесите изменения в файл конфигурации. Ниже приводится пример для первого сервера v2m-srv-01.local.
Перейдите в папку:
%Programdata%\Speech Technology Center\DictationApp.Server\Settings
1.В файле Dictation.Asr.Service.Properties.Settings.config активируйте работу через балансировщик нагрузки и укажите строку подключения к серверу ConnectionStringForBalancer.
<Dictation.Asr.Service.Properties.Settings>
...
<setting name="SendDataToBalancer" serializeAs="String">
<value>True</value>
</setting>
<setting name="ConnectionStringForBalancer" serializeAs="String">
<value>dct-srv-01.local;34001;39257</value>
</setting>
...
</Dictation.Asr.Service.Properties.Settings>
2.В файле Dictation.Common.Properties.Settings.config укажите имя хоста с балансировщиком (настройка BalancerIp).
<Dictation.Common.Properties.Settings>
<setting name="BalancerIp" serializeAs="String">
<value>dct-bal.local</value>
</setting>
...
</Dictation.Common.Properties.Settings>
Если какого-то из файлов конфигурации в папке нет, создайте его и скопируйте в него настройки из примера. |
Настройка Voice2Med Client
Для каждого клиентского приложения внесите изменения в файл конфигурации.
Откройте файл:
%Programfiles(x86)%\Speech Technology Center\Voice2Med Client\DictationApp.Client.dll.config
В секции Dictation.Common.Properties.CommonSettings укажите способ проверки сертификата безопасности в параметре SslCertificateVerification. Допустимые значения:
•Strict
SSL-сертификат должен быть подписан доверенным корневым сертификатом, и имя сервера должно совпадать с именем, указанным в сертификате (допустимо указывать IP-адрес вместо имени сервера);
•IgnoreName
SSL-сертификат должен быть подписан доверенным корневым сертификатом, но имя сервера не обязано совпадать с именем, указанным в сертификате;
•Insecure
SSL-сертификат может быть подписан недоверенным сертификатом.
<applicationSettings>
...
<Dictation.Common.Properties.CommonSettings>
...
<setting name="SslCertificateVerification" serializeAs="String">
<value>Strict</value>
</setting>
...
</Dictation.Common.Properties.CommonSettings>
...
</applicationSettings>
Если эта секция отсутствует, допишите ее в файл. |