Nginx 代理远程数据库

我的数据库和服务器不在一台机器上,但在同一个内网(《腾讯云轻量服务器和云数据库互通》),所以服务器可以直接通过内网 ip 访问数据库,但我希望更进一步,服务器内的应用不直接访问数据库的 ip,而是通过 nginx 代理访问,这样一来,如果哪天数据库迁移了,只需要改 nginx 代理就可以了。

nginx 对数据库的代理需要通过 stream 模块处理,stream 模块不需要额外下载,只需要添加编译参数 –with-stream,重新编译 nginx 就可以了。

我用的 lnmp,所以到 lnmp 文件夹修改 lnmp.conf:

Nginx_Modules_Options='--with-stream'

然后执行命令:./upgrade.sh nginx

编译完成之后,到 /usr/local/nginx/conf 配置 nginx.conf 文件。这里需要注译 stream 是和 http 同一级的。

stream
    {
        server {
            listen xxxx;
            proxy_pass xx.xx.xx.xx:3306;
        }
    }

再重启 nginx 就可以了。