Nginx反向代理远程MySQL

背景 情况是这样的,我们一个项目的客户是AWS的RDS,因为业务需要,我们要连接客户的RDS,但是客户那边只能添加一台我们机器的IP白名单。 所以我们在AWS这台RDS的同区域买了一台EC2云服务器,然后提供公网IP,这样RDS那边就添加了我们的IP白名单,可以在这台EC2上面连接那台RDS了。。。 但是ubuntu命令行操作数据库始终不太方便啊,比如:查询结果导出为Excel,导出来的文件表头是没有问题,每一条数据也都按行区分,但是多列合并放到第一列里面了,这样数据就没发操作和查看了。。。 所以打算用nginx的反向代理试一下。 准备工作 使用的是nginx的stream模块,测试前需要查看nginx是否在编译时开启了stream模块: nginx -m 如果看到 ngx_stream_module 字样就是已经编译了stream模块(我用的是Tengine)。 反向代理配置 编辑nginx配置文件: vim /etc/nginx/conf/nginx.conf 注意 stream 位于配置文件顶层,和 http 同级。 # nginx 代理 stream { # 设置代理超时时间,设的大一些,避免长连接因为超时时间而中断 proxy_timeout 3d; server { listen 3307; listen [::]:3307; proxy_pass xxx.com:3306; } } 重启nginx # 使修改后的配置文件生效 nginx -c /etc/nginx/conf/nginx.conf # 平滑重启nginx nginx -s reload 测试 客户端连接你的反代机器IP:3307,实际上相当于连接到了xxx.com:3306这个数据库。 如果使用了云服务器,注意在策略组放行 tcp 3307端口。