Nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。本文系统环境为 CentOS7,并且已经安装Nginx 1.15.4。
1 安装stream模块
- 重新配置模块
进入Nginx安装包目录
./configure --prefix=/Nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-stream --with-stream_ssl_module
- 重新编译
make && make install
- 重启Nginx
进入到Nginx安装目录,运行如下命令:
./sbin/nginx -s reload
2 配置Nginx
- 修改配置文件nginx.conf
将Mysql数据库的3306端口代理到8081端口:
stream {
upstream mysql {
zone myapp1 64k;
server localhost:3306 weight=1 max_fails=3 fail_timeout=30s;
}
server {
listen 8081;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass mysql;
}
}
- 重启Nginx
进入到Nginx安装目录,运行如下命令:
./sbin/nginx -s reload
- 开放CentOS7的8081端口
vim /etc/sysconfig/iptables
添加如下内容
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT
重启iptables
service iptables restart
3 验证
- 远程运行命名
连接远程数据库(192.0.0.1),端口8081,用户名为“root”,密码123(注意:“-p”和“123” 之间不能有空格)
mysql -h 192.0.0.1 -P 8081 -u root -p123
ps:如果连接不上,可以试试重启mysql远程机器
参考资料
[1] nginx代理mysql
[2] Nginx反代代理MySQL配置实例
[3] mysql远程连接命令