stream

Директива 'stream' определяет блок для обработки трафика TCP и UDP в NGINX. — NGINX Core

stream
main
Синтаксисstream { ... }
По умолчаниюnone
Контекстmain
МодульNGINX Core
Аргументыnone

Описание

Директива 'stream' позволяет NGINX обрабатывать не-HTTP трафик, обеспечивая работу с потоками TCP и UDP. Эту директиву можно настроить в main context, что позволяет пользователям указывать разные servers или upstreams для различных типов потоковых данных. Внутри 'stream' блока пользователи могут определять несколько server blocks, где каждый server может обрабатывать разные протоколы, порты или конфигурации upstream, отличные от обычной обработки HTTP. С введением этой директивы пользователи могут использовать различные директивы, такие как 'server' и 'proxy_pass', внутри контекста 'stream' для обработки потоков. Например, TCP load balancing может быть настроен прямо в этом блоке, что смещает использование ресурсов в пользу разных backend servers на основе алгоритмов, таких как round-robin, least connections или IP hash. Кроме того, можно настроить лимиты соединений, таймауты и обработку ошибок, чтобы обеспечить эффективную и отказоустойчивую обработку потоков. Директива 'stream' открывает NGINX как более универсальный прокси, помогая в таких задачах, как SSL termination для TCP services, что упрощает защищённую передачу. В результате это расширяет круг применений за пределами стандартной парадигмы HTTP/HTTPS, позволяя, например, базам данных и игровым серверам использовать возможности NGINX для эффективного управления своей сетевой функциональностью.

Пример конфига

stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }

    server {
        listen 12345;
        proxy_pass backend;
    }
}

Убедитесь, что блок 'stream' не размещён внутри блока 'http' или 'server', поскольку он должен быть объявлен в основном контексте.

При указании нескольких блоков 'server' в директиве 'stream' не забудьте правильно настроить порты прослушивания, чтобы избежать конфликтов.