Nginx基础教程(92)Nginx Stream机制模块体系:Nginx Stream模块详解:让TCP/UDP流量转发更简单

听说你的应用还需要额外装一堆中间件来做四层代理?Nginx的Stream模块表示很委屈~

01 为什么需要Nginx Stream模块?

在现代应用架构中,四层负载均衡的需求无处不在。无论是数据库集群、消息队列还是自定义的TCP/UDP服务,都需要一个高效、可靠的代理机制。

在Nginx 1.9.0之前,我们通常需要依赖LVS、HAProxy或者各种中间件(如MyCat)来实现这一功能。

这就好比明明一辆卡车就能运完的货物,却非得找来三辆小轿车,既浪费资源又增加维护成本。

2015年,Nginx 1.9.0发布了Stream模块,正式支持四层协议的代理和负载均衡。这意味着我们终于可以用统一的工具来解决七层和四层的代理需求了!

与内核态转发的LVS相比,Stream模块在应用层实现代理,需要与客户端和服务器分别建立socket连接,在性能和效率上有一定差距。但对于大多数场景来说,它已经足够强大,而且配置更加灵活简便。

Stream模块的核心价值在于:

  • 统一技术栈,降低运维复杂度
  • 配置简单直观,学习成本低
  • 支持丰富的负载均衡算法
  • 可以与Nginx现有的认证、日志等模块结合使用

02 Stream模块基础:从概念到配置

什么是Stream模块?

Nginx的Stream模块是一个专门处理TCP和UDP流量转发的核心模块。它允许Nginx作为反向代理和负载均衡器,工作在传输层(四层),而不只是应用层(七层)。

可以把Stream模块想象成一个聪明的邮局分拣员,他不需要知道信封里具体写了什么(应用层数据),只需要根据信封上的地址信息(四层数据)就能决定把信件投递到哪个邮局。

编译与启用

默认情况下,Stream模块不会自动编译到Nginx中,需要在编译时显式启用:

./configure --with-stream
make && make install

确认Stream模块是否已安装:

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

基础配置结构

Stream模块的配置与HTTP模块平行,需要在nginx.conf中的main上下文中定义:

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

# HTTP模块(七层代理)
http {
    server {
        listen 80;
        # ... HTTP相关配置
    }
}

# Stream模块(四层代理)
stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }
    
    server {
        listen 12345;
        proxy_pass backend;
    }
}

注意:Stream块必须与events和http块同级,不能嵌套在http块内。

03 核心配置指令详解

监听指令:listen

listen指令定义了Nginx监听的地址和端口,以及相关的套接字选项:

server {
    listen 127.0.0.1:12345;          # 监听特定IP和端口
    listen *:12345;                   # 监听所有IPv4地址的12345端口
    listen 12345;                     # 同上,等同于*:12345
    listen [::1]:12345;               # 监听IPv6地址
    listen [::]:12345;                # 监听所有IPv6地址
    listen unix:/var/run/nginx.sock;  # 监听UNIX域套接字
    
    # 参数示例
    listen 12345 udp reuseport;       # UDP协议,重用端口
    listen 12345 ssl;                 # 启用SSL/TLS
    listen 12345 proxy_protocol;      # 支持PROXY协议
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值