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