【发布时间】:2020-07-21 14:48:36
【问题描述】:
我希望能够像这样连接到 postgres 服务器:
psql -h postgres-a.example.com -p 9000
该连接应该由代理服务器(如 nginx 或 haproxy)接收,并且由于主机名postgres-a.example.com,它将被重定向到数据库 A。如果我使用postgres-b.example.com 和相同的端口,它应该转到数据库B。
我一直在研究这个,但我仍然不能 100% 确定它会如何工作。我读到基于主机名重定向 TCP 连接 (psql) 的唯一方法是使用 SNI 标头。但我仍然不明白我们是否需要 SSL 证书,或者我们是否需要使用 https://postgres-a.example.com(这对我来说没有任何意义)。它将如何运作?
谁能帮我理解这个?
【问题讨论】:
-
http(s)是网络服务器的协议。psql可能使用专有协议与其数据库服务器通信。http(s)发送主机名作为初始请求的一部分,Nginx 理解这个协议,这就是它可以基于主机名反向代理的原因。psql完全有可能没有发送主机名,而且无论如何 Nginx 都无法确定它,所以简短的回答是否定的。
标签: postgresql http nginx tcp haproxy