Versions Compared

Key

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

...

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

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

events {
    worker_connections  1024;
}

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

    sendfile        on;
    client_max_body_size 20G;
    
    # КРИТИЧНО: Увеличиваем буферы для тяжелых Kerberos-тикетов
    large_client_header_buffers 4 64k;
    proxy_buffer_size   128k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   256k;

    # Поддержка постоянных соединений с браузером
    keepalive_timeout  300s;
    keepalive_requests 1000;

    # 1. Настройка Upstream с Keep-Alive (обязательно для Negotiate/NTLM)
    upstream vitros_backend {
        server 127.0.0.1:4615;
        keepalive 64; 
    }

    # Редирект с HTTP на HTTPS
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name dev-vs.vitro.dev;

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

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

    # Основной SSL сервер
    server {
        listen 443 ssl default_server;
        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 {
            proxy_pass http://localhost:4616/workflow/manager;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_buffering off;
            proxy_set_header Host $host;
        }	
    }
}

Примечание: Файлы *.crt и *.key для https протокола можно получить из pfx файла сертификата. На примере самоподписанного сертификата IIS (не рекомендуется для продукционных сред!):

  1. Откройте IIS Manager → выберите сервер → Server Certificates  Create Self-Signed Certificate.
  2. Кликните правой кнопкой на созданный сертификат → Export. Сохраните его как файл .pfx с паролем.
  3. С помощью утилиты openssl (она часто идет в комплекте с Git для Windows или ставится отдельно), чтобы вытащить ключ и сертификат:
    1. Code Block
      titleИзвлечь ключ
      openssl pkcs12 -in dev-vs.vitro.dev.pfx -nocerts -out dev-vs.vitro.dev.key -nodes
    2. Code Block
      titleИзвлечь сертификат
      openssl pkcs12 -in dev-vs.vitro.dev.pfx -clcerts -nokeys -out dev-vs.vitro.dev.crt

...