之所以会有此篇文章, 实在是笔者被被逼到没有办法. 

也许是出于安全原因, 客户的数据库服务器只能通过 web 服务器访问到. 正如本站前文所言, 试过在 web 服务器通过 mssql_cli 连接数据库服务器, 无奈 mssql_cli 在数据输出上的诸多不便, 只能说用过的都知道, 很坑很坑. 还是官方的 sql server management 好用.

以下就如何通过 web 服务器的 nginx 反向代理方式, 访问数据库服务器: 

1. nginx 支持 stream

默认编译安装 stream 是不包含 stream 功能的, 需要在编译时加上这个参数

./configure --with-stream

 

2. 配置 nginx

 修改 nginx.conf 文件如下图:

注意 stream 段加在 event 或者 http 同级别的段.

由于本机测试, 只是通过本机的 12345 端口, 访问本机的 1433 端口, 对于真实情况, 修改 server 地址为真实地址即可.

 

3. 重启后测试

重启 nginx , 注意是重启, 不是 nginx -s reload .

使用以下 netstat  查看端口 12345 是否启用

netstat -tln

 

 再使用 SQL Server Management Studio 客户端连接: 

 

连接成功如下: 

 本方法最大的问题在于: 如果 web 服务器只允许访问 443/80 端口的话, 那就尴尬了。