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设置时间短的时候,超时,会由该代理服务器,向客户端和被代理的服务器主动发起连接断开,四次挥手的主动方

更多推荐