1. Nginx代理能力全景观察
很多人对Nginx的印象还停留在"高性能Web服务器"或"HTTP反向代理"的层面,实际上从1.9.0版本开始,Nginx就已经具备了完整的四层代理能力。我在实际运维工作中发现,许多需要负载均衡的TCP/UDP服务(如数据库集群、游戏服务器、IoT设备通信)都可以通过Nginx轻松实现流量分发,这比专门部署LVS或HAProxy要省心得多。
Nginx的四层代理模块是作为独立组件存在的,编译时需要显式启用--with-stream参数。与七层HTTP代理相比,它工作在传输层,不解析应用层协议,因此可以代理任意基于TCP/UDP的协议。最近在为某金融系统部署PostgreSQL读写分离时,我就用Nginx实现了3306端口的透明转发,客户端完全感知不到后端有多个数据库节点。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心配置解析
2.1 基础TCP代理配置
先看一个最简化的MySQL代理配置示例:
nginx复制stream {
server {
listen 3306;
proxy_pass db_backend;
proxy_connect_timeout 1s;
}
upstream db_backend {
server 192.168.1.101:3306 weight=5;
server 192.168.1.102:3306;
}
}
关键点解析:
stream是四层代理的顶级配置块,与http块同级proxy_connect_timeout建议设置为1-3秒,避免连接挂起- UDP代理只需在listen后添加
udp参数
2.2 高级负载均衡策略
Nginx支持多种负载算法,这个Redis集群配置就使用了一致性哈希:
nginx复制upstream redis_cluster {
hash $remote_addr consistent;
server 10.0.0.1:6379 max_fails=3 fail_timeout=30s;
server 10.0.0.2:6379 max_conns=1000;
}
特别有用的
