ngx_stream_core_module模块

模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器

这里调度的是mariadb 数据库

  数据库服务器:192.168.1.4,192.168.1.6

  一、安装mariadb数据库

yum install mariadb-server -y

  二、开启数据库,并设置为开机自启

1 systemctl start mariadb 
2 systemctl enable mariadb

  三、创建账号

mysql -e "grant all on *.* to test@'192.168.1.%' identified by 'centos'"

    一二三,三步在两台数据库服务器上都需要做

  四、创建数据库

    1、在IP地址为192.168.1.4的数据库服务器上创建数据库

mysql -e "create database db4"

    2、在IP地址为192.168.1.6的数据库服务器上创建数据库

mysql -e "create database db6"

为了区分不同服务器,所以创建不同的数据库名

  五、修改nginx调度服务器的主配置文件

vim /etc/nginx/nginx.conf
stream {
        upstream mysqlsrvs {
                server 192.168.1.4:3306;
                server 192.168.1.6:3306;
                least_conn;
        }
        server {
                listen 192.168.1.5:3306;
                proxy_pass mysqlsrvs;
        }
}

与http同级,可以直接放在最后面

  六、测试访问

[16:49:15 root@mysql ~]#mysql -utest -pcentos -h192.168.1.5 -e "show databases"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db4                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
[16:49:29 root@mysql ~]#mysql -utest -pcentos -h192.168.1.5 -e "show databases"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db6                |
| mysql              |
| performance_schema |
| test               |

至此实现tcp|udp的反向代理

ngx_stream_proxy_module模块
  可实现代理基于TCP,UDP (1.9.13), UNIX-domain sockets的数据流
proxy_pass address;
  指定后端服务器地址
proxy_timeout timeout;
  无数据传输时,保持连接状态的超时时长
  默认为10m
proxy_connect_timeout time;
设置nginx与被代理的服务器尝试建立连接的超时时长
默认为60s