插件窝 干货文章 nginx怎么启用stream

nginx怎么启用stream

Stream Nginx 模块 配置 479    来源:    2025-04-07

在Nginx中启用Stream模块

Stream模块是Nginx的一个核心模块,用于处理TCP/UDP流量(4层负载均衡),与默认的HTTP模块(7层负载均衡)不同。以下是启用和配置Stream模块的方法:

1. 检查Nginx是否包含Stream模块

nginx -V 2>&1 | grep -o with-stream

如果输出with-stream则表示已编译包含该模块。

2. 如果没有Stream模块,需要重新编译Nginx

# 查看当前编译参数
nginx -V

# 重新配置并添加--with-stream参数
./configure --with-stream [其他原有参数]
make
make install

3. 配置Stream模块

在nginx.conf主配置文件中添加stream块(与http块同级):

# 主配置文件nginx.conf中
events {
    worker_connections  1024;
}

http {
    # 原有的HTTP配置
}

stream {
    # Stream模块配置
    include /etc/nginx/stream.conf.d/*.conf;
}

4. 创建Stream配置文件

创建单独的stream配置文件,例如/etc/nginx/stream.conf.d/mysql.conf

# MySQL负载均衡示例
upstream mysql_servers {
    server 192.168.1.10:3306;
    server 192.168.1.11:3306;
}

server {
    listen 3306;
    proxy_pass mysql_servers;
    proxy_connect_timeout 1s;
}

5. 常用Stream配置示例

TCP负载均衡

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

    server {
        listen 12345;
        proxy_pass tcp_servers;
    }
}

UDP负载均衡

stream {
    upstream dns_servers {
        server 192.168.1.10:53;
        server 192.168.1.11:53;
    }

    server {
        listen 53 udp;
        proxy_pass dns_servers;
        proxy_timeout 1s;
        proxy_responses 1;
    }
}

6. 测试并重启Nginx

nginx -t  # 测试配置
nginx -s reload  # 重新加载配置

注意事项

  1. Stream模块默认不包含在部分发行版的Nginx包中,可能需要从源码编译
  2. Stream和HTTP模块可以共存,但监听相同端口时会有冲突
  3. 4层负载均衡比7层性能更高,但无法处理HTTP特有的功能(如基于URL的路由)
  4. 对于UDP服务,需要明确指定udp参数

如需更复杂的配置,可以参考Nginx官方文档中的Stream模块部分。