nginx的stream模块配置详细说明
时间: 2025-06-27 21:17:05 浏览: 8
### Nginx Stream 模块配置详解
#### 配置文件结构
Nginx Stream 模块用于处理非 HTTP 协议的流量,如 TCP 和 UDP。基本配置结构如下:
```nginx
stream {
upstream backend {
server 192.168.1.1:1234;
server 192.168.1.2:1234;
}
server {
listen 12345;
proxy_pass backend;
}
}
```
这段代码展示了如何设置一个简单的 TCP 负载均衡器[^1]。
#### 主要指令解释
- **upstream**: 定义一组服务器列表,这些服务器将接收来自客户端的请求。
- **server (in stream block)**: 设置监听端口以及转发目标。`proxy_pass` 后面跟的是上游服务器组的名字。
- **listen**: 指定监听哪个 IP 地址和端口号上的连接请求。
对于更复杂的场景,还可以加入健康检查、SSL 支持等功能来增强安全性与稳定性[^3]。
例如,在启用 SSL/TLS 加密的情况下,可以在 `server` 块内添加证书路径等相关参数:
```nginx
stream {
upstream backend {
server 192.168.1.1:1234 ssl;
server 192.168.1.2:1234 ssl;
check interval=30s rise=2 fall=5 timeout=10s type=tcp;
}
map $ssl_preread_server_name $name {
default example.com;
}
server {
listen 443;
proxy_pass backend;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/key.pem;
}
}
```
此段配置实现了带有 SSL/TLS 加密功能的 TCP 流量分发,并加入了对后端服务状态监测的支持。
#### 应用实例
假设有一个 MySQL 数据库集群需要通过 Nginx 来做读写分离,则可以通过下面的方式来进行配置:
```nginx
stream {
upstream mysql_readonly {
zone tcp_memcached 64k;
hash $remote_addr consistent;
server db-read-only-1.example.com:3306 max_fails=3 fail_timeout=30s;
server db-read-only-2.example.com:3306 max_fails=3 fail_timeout=30s;
}
upstream mysql_write {
server master-db.example.com:3306 weight=5 max_conns=1000;
}
server {
listen 3307;
proxy_pass mysql_readonly;
}
server {
listen 3308;
proxy_pass mysql_write;
}
}
```
这里分别设置了两个不同的监听端口对应只读操作和写入操作的不同数据库节点集合。
阅读全文
相关推荐


















