http.proxyHost 可以路由参与其中的 HTTP 客户端,却对 PostgreSQL JDBC 毫无作用。PostgreSQL 发送的是数据库协议,而不是 HTTP 请求。

JDBC 连接 URL 仍须指明数据库服务器和数据库。把其中的服务器换成 HTTP 代理地址,并不能让驱动程序学会 CONNECT。

对于 SOCKS 服务,应调查 JDBC 之下的套接字实现。Java 为参与其中的套接字提供以下启动属性:

-DsocksProxyHost=203.0.113.10 -DsocksProxyPort=1080

替换文档中的端点。这些是 JVM 参数,不是 JDBC URL 参数。在期望它使用这些属性之前,请核实实际的 JDK/驱动程序套接字路径以及任何自定义套接字工厂。

这些属性作用于整个进程,因此请把其他连接一并纳入影响评估。当只有数据库流量应走这条路径时,有文档记录的专用连接器或经批准的隧道可以提供更清晰的边界。

代理仍然需要获得许可并能访问数据库端口。随后由数据库实施主机访问规则、目标 TLS 及其自身的登录。请保留其证书主机名,并将数据库账户与代理账户分开。

记录第一个失败的阶段:代理连接、协商、数据库 TCP、TLS 或数据库登录。这些证据才能指明下一处改动;反复调整未使用的 HTTP 属性做不到这一点。

相关文章