公网只暴露了一个默认端口,只好想办法访问数据库
选用nginx进行转发。配置如下:
stream {
upstream cloudsocket {
hash $remote_addr consistent;
server x.x.x.x: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的访问。