场景:
访问UAT环境,只能使用客户电脑访问,太难用了,于是就需要在自己电脑上跑代码,通过客户电脑中转来访问uat环境的数据库。
选用nginx进行转发。配置如下:
stream {
upstream cloudsocket {
hash $remote_addr consistent;
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;
}
}
重启。
访问nginx所在机器的ip和配置的3306端口,输入账号密码,就可以转发mysql连接了。
注意 stream和http是同级别的,不要放入http里面。
原理,查了一顿,没整明白,以后有时间在研究。
只有一点点:
nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网mysql的访问。