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プロパティを何度も調整しても、それはできません。

関連記事