首页 > 解决方案 > 我可以使用反向代理直接连接数据库吗?

问题描述

是否可以设置允许数据库客户端使用 ssl 端口 443 连接并重定向到端口 1521 的反向代理?我怀疑它不会起作用。有人可以解释为什么或为什么不?

标签: networkingreverse-proxynginx-reverse-proxy

解决方案


我假设基于端口 1521 的 Oracle 数据库。

为任何 TCP 后端设置 Nginx TCP (L4) 代理都没有问题。看这里https://www.nginx.com/blog/tcp-load-balancing-udp-load-balancing-nginx-tips-tricks/示例配置。

当涉及到终止 SSL (L5) 并将解密的数据发送到 TCP 后端时,它在技术上也是可行的,ngx_stream_ssl_module但我从未对其进行过测试,据我所知,人们在为 postgresql 设置它时遇到了问题:

http://nginx.org/en/docs/stream/ngx_stream_ssl_module.html

nginx可以用SSL终止做TCP负载平衡吗

我从未见过 Nginx 设置为数据库的代理。相反,连接池(即 postgresql 的 pgbouncer)通常不仅用于池,而且还用作 SSL 卸载服务。它们实际上是数据库的 L7 代理。

pgbouncer 的 Oracle 等效项似乎是 Oracle Connection Manager,它支持 SSL,所以我强烈建议使用它而不是 Nginx 或任何其他通用反向代理服务器:

https://docs.oracle.com/en/database/oracle/oracle-database/18/netag/configuring-oracle-connection-manager.html#GUID-AF8A511E-9AE6-4F4D-8E58-F28BC53F64E4


推荐阅读