nginx配置stream模块

本文详细介绍了如何通过`stream`模块在Nginx中配置SFTP代理,包括解压安装、指定参数、编译安装、配置upstream和server块,以及启动和清理步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用背景:使用stream模块转发应用服务器sftp连接请求。

1.解压nginx压缩包
tar -zxvf nginx-1.16.1.tar.gz

2.指定配置项,--prefix表示安装路径,--with-stream表示添加流模块
./configure --prefix=/usr/local/nginx-my-stream/nginx1.16 --with-stream --with-http_stub_status_module --with-http_ssl_module

3.编译
make

4.安装
make install

5.添加流模块,与http模块同级
stream {
        upstream sftp_zj {
                hash $remote_addr consistent;
                server hz-sftp1.zj.com:2122 max_fails=3 fail_timeout=60s;
                #sftp服务器和端口
        }
        #sftp代理
        server {
                listen 2122;
                proxy_connect_timeout 10s;
                proxy_timeout 10s;
                proxy_pass sftp_zj;
        }
}

6.启动nginx
./nginx -c /usr/local/nginx-my-stream/nginx1.16/conf/nginx.conf

7.完成后可删除压缩包和源文件

### 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; } } ``` 这里分别设置了两个不同的监听端口对应只读操作和写入操作的不同数据库节点集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值