stream

'stream' 指令定义了一个用于在 NGINX 中处理 TCP 和 UDP 流量的块。 — NGINX Core

stream
main
语法stream { ... }
默认值none
上下文main
模块NGINX Core
参数none

说明

'stream' 指令允许 NGINX 处理非 HTTP 流量,使其能够传输 TCP 和 UDP 流。这项指令可以在主上下文中配置,允许用户为各种类型的流式数据指定不同的服务器或 upstreams。在 'stream' 块内,用户可以定义多个 server 块,每个 server 可以处理与常规 HTTP 处理不同的协议、端口或 upstream 配置。 通过引入该指令,用户可以在 'stream' 上下文中使用诸如 'server' 和 'proxy_pass' 等指令来处理流。例如,可以直接在此块中设置 TCP 负载均衡,根据 round-robin、least connections 或 IP hash 等算法将资源使用偏向不同的后端服务器。此外,还可以配置连接数限制、超时设置和错误处理,以确保流处理既高效又具有弹性。 'stream' 指令使 NGINX 成为更为通用的代理,支持诸如对 TCP 服务进行 SSL 终止之类的应用,从而简化安全传输。因此,它扩展了标准 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' 块内,因为它必须在主上下文中声明。

在 'stream' 指令中指定多个 'server' 块时,请记得正确配置监听端口以避免冲突。