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端口。

Kilvn avatar
关于 Kilvn
Kilvn's true identity is unknown. Maybe he is a successful blogger or writer. Nobody knows it.