nginx 代理 tcp协议 mysql 连接

Posted PHPdragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 代理 tcp协议 mysql 连接相关的知识,希望对你有一定的参考价值。

使用nginx代理mysql连接有个好处就是,如果做了容灾处理的话, 可以瞬间平滑切换到可用服务上。

 

1. vi /etc/nginx/nginx.conf ,在 http{} 结构体外(也就是文件末尾)添加如下配置:

stream {

    upstream cloudsocket {
       hash $remote_addr consistent;
      # $binary_remote_addr;
       server 192.168.182.155:3306 weight=5 max_fails=3 fail_timeout=30s;
    }
    server {
       listen 3306;#数据库服务器监听端口
       proxy_connect_timeout 10s;
       proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
       proxy_pass cloudsocket;
    }
}

 

2. cat /etc/nginx/nginx.conf ,内容如下:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

stream {
    upstream cloudsocket {
       hash $remote_addr consistent;
      # $binary_remote_addr;
       server 192.168.182.155:3306 weight=5 max_fails=3 fail_timeout=30s;
    }
    server {
       listen 3306;#数据库服务器监听端口
       proxy_connect_timeout 10s;
       proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
       proxy_pass cloudsocket;
    }
}

 

3. systemctl restart nginx ,重启nginx。

4.验证

登录192.168.182.156服务器执行看是否有3306端口的监听

[root@localhost sbin]# netstat -nap|grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      89870/nginx: master 

用Navicat for MySQ工具测试是否能连接

 

以上是关于nginx 代理 tcp协议 mysql 连接的主要内容,如果未能解决你的问题,请参考以下文章

nginx代理tcp协议连接mysql

Nginx代理tcp协议(mysql)

Nginx代理WebSocket方法

【nginx】如何解决使用nginx作为反向代理端口耗尽问题?

nginx代理springCloud网关nginx服务器出现很多TIME_WAIT

Nginx 代理tcp端口