nginx代理mysql(模块stream)
1. 安装stream模块
nginx默认不会编译stream模块的,需要在编译的时候,指定--with-stream
./configure --prefix=xxx --add-module=xxxx --add-module=xxx --with-stream
2. nginx配置代理mysql示例:
# stream属于最顶层的配置,`Context: main`
stream {
upstream mysqlserver {
server 192.168.52.120:3306;
}
server {
listen 33060;
#proxy_connect_timeout 10s;
#代理时间默认10分钟,在这个时间范围内,没有数据传递,就会关闭连接,如果这个时间设置短,就会在该主机上产生大量的FIN_WAIT2和TIME_WAIT状态的tcp连接,连接的复用率会变低
#proxy_timeout 10m;
# 这里的proxy是stream-proxy模块,不是http-proxy
proxy_pass mysqlserver;
}
}
3. 测试
使用navication连接测试即可,使用nginx代理之后,可以通过 netstat -an | grep tcp | grep 3306
当使用navication连接或查询的时候来观察tcp连接状况
在windows下可以通过 netstat -an | findstr 3306
观察
结论:当proxy_time设置时间短的时候,超时,会由该代理服务器,向客户端和被代理的服务器主动发起连接断开,四次挥手的主动方;
4. 参考
[1] TCP三次握手和四次挥手以及11种状态
[2] 23-tcp协议——TIME_WAIT状态和FIN_WAIT2状态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2017-08-04 使用GeoServer导出地图数据GeoJSON并应用
2017-08-04 使用js下载文件
2016-08-04 quaret程序打jar包