Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

27. Настроить обратное проксирование.
Обратное проксирование можно настроить с помощью различных программных средств, с учетом предпочтений заказчика. В отдельной статье рассмотрим настройку рассмотрена настройка обратного проксирования через IIS.
В рамках данной статьи рассматривается наиболее предпочтительный вариант с использованьем NGINX в качестве обратного прокси.
Пример конфигурационных файлов для настройки обратного проксирования в NGINX (for Windows) Пример конфигурационного файла NGINX:

Code Block
languageyml
titleC:\nginx\conf\nginx.conf
#user  nobody;
worker_processes  1;

#error_log#  logs/error.log;
#error_log  logs/error.log  notice;Расширенный лог для отладки
#error_log  logs/error.log  info; 

#pidevents {
       logs/nginx.pid;


events {
    worker_connections  1024worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_formatsendfile  main  '$remote_addr - $remote_user [$time_local] "$request" ' on;
    # client_max_body_size 20G;
    
    # КРИТИЧНО: Увеличиваем буферы для тяжелых Kerberos-тикетов
   '$status $bodylarge_client_bytesheader_sent "$http_referer" 'buffers 4 64k;
    #proxy_buffer_size   128k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   '"$http_user_agent" "$http_x_forwarded_for"';

256k;

    # #access_logПоддержка постоянных logs/access.logсоединений с main;
браузером
    sendfilekeepalive_timeout  300s;
    keepalive_requests  on1000;

    #tcp_nopush# 1. Настройка Upstream  on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

с Keep-Alive (обязательно для Negotiate/NTLM)
    upstream vitros_backend {
       #gzip  on;

server {server 127.0.0.1:4615;
        listen 80 default_server;
		server_name vitro.example.ru;keepalive 64; 
  
  }

    # Редирект с  client_max_body_size 100000M;
        
        proxy_http_versionHTTP на HTTPS
    server {
        listen 80 default_server;
        listen  1.1;
		proxy_pass_request_headers on;
		proxy_pass_request_body    on;           

		proxy_buffer_size   1M;[::]:80 default_server;
        server_name dev-vs.vitro.dev;

        proxy_buffersif ( $host 4 1M;
!= "dev-vs.vitro.dev" ){
            proxy_read_timeout 1hreturn 444;
        proxy_send_timeout 1h; }

        location / {
  return 301 https://$host$request_uri;
    }

    # Основной SSL сервер
 #proxying traffic to server {
 upstream application (Vitro.Server.Core.Web)
     listen 443 ssl default_server;
        proxy_pass http://127.0.0.1:4615;
				proxy_set_header X-Real-IP $remote_addr;
				proxy_set_header  listen [::]:443 ssl default_server;
        server_name dev-vs.vitro.dev;

        ssl_certificate     C:/nginx/conf/ssl/dev-vs.vitro.dev.crt;
        ssl_certificate_key C:/nginx/conf/ssl/dev-vs.vitro.dev.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        
        # Оптимизация SSL для Windows
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        if ( $host != "dev-vs.vitro.dev" ){
            return 444;
        }

        # Общие настройки проксирования для Windows Auth
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_pass_request_body    on;
        proxy_read_timeout 1h;
        proxy_send_timeout 1h;

        location / {
            # 2. Используем upstream
            proxy_pass http://vitros_backend;

            # 3. КРИТИЧНО: Отключаем буферизацию для трансляции NTLM-рукопожатия
            proxy_buffering off;
            proxy_request_buffering off;

            # 4. Сбрасываем заголовок Connection для работы Keep-Alive до бэкенда
            proxy_set_header Connection ""; 
            
            # 5. Проброс заголовков
            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;
            
            # Для поддержки WebSockets
            proxy_set_header Upgrade $http_upgrade;
            # proxy_set_header Connection "upgrade"; # Раскомментируйте, если нужны только сокеты
        }

        location /workflow/manager {
       X-Forwarded-For     $proxy_add_x_forwarded_for;
				proxy_set_headerproxy_pass http://localhost:4616/workflow/manager;
          X-Forwarded-Proto   $scheme;
				proxy_http_version 1.1;
            proxy_set_header HostConnection $host;         
		}
 
"";
            location /workflow/manager {
    proxy_buffering off;
            proxy_set_pass http://localhost:4616/workflow/managerheader Host $host;
        }	
    
	 }
}


Добавление шаблонов рабочих процессов

  1. Перейти на вкладку Workflow Defenitions в Elsa
    http://vitro.example.ru/workflow/manager/workflow-definitions
    где vitro.example.ru - адрес сайта
     
  2. Нажать Create workflow 


  3. Нажать Import 


  4. Выбрать файл шаблона из папки workflows дистрибутива


  5. После загрузки шаблона нажать Publish 


  6. Перейти обратно на вкладку Workflow defenitions  и убедиться, что шаблон создан

  7. Таким образом добавить все шаблоны из папки workflows дистрибутива

Настройка системы

Необходимо указать адрес портала в ключе Site.PortalUrl.

Для этого нужно:

  1. Перейти в список Конфигурация пространства Центр Администрирования (список по умолчанию скрыт).
  2. Открыть папку Общие настройки 
  3. Для ключа Адрес портала указать в поле Значение (строка) адрес портала в виде https://example.com

    Warning
    Важно!
    Адрес портала не должен заканчиваться символом слэша.

Добавление лицензии

Для работы серверной части требуется лицензионный ключ.

Если лицензионного ключа нет, то запросы на обновление элементов выдают ошибку "Лицензионные ограничения".

Лицензионный ключ предоставляется по запросу к менеджеру и должен быть запрошен повторно перед обновлением системы.

После установки лицензионный ключ необходимо разместить в списке Лицензии пространства Центр администрирования. 

Ссылка на список выведена в сайдбар: