Nginx反向代理搞乱了对PostgreSQL实例的请求

Nginx反向代理搞乱了对PostgreSQL实例的请求,postgresql,nginx,reverse-proxy,amazon-rds,Postgresql,Nginx,Reverse Proxy,Amazon Rds,我有一个PostgreSQL RDS实例,位于Amazon VPC的一个私有子网上。我正在使用同一VPC中公共子网上的一个实例,将代理请求反向到私有子网上的EC2和RDS实例 反向代理可以很好地用于HTTP到EC2实例。但是,我无法通过反向代理连接到RDS实例 我可以使用公共子网上的EC2实例,使用psql连接到RDS。但是,如果我反向代理,则会出现以下错误: > psql --host=PUBLIC_IP --port=5432 psql: received invalid respon

我有一个PostgreSQL RDS实例,位于Amazon VPC的一个私有子网上。我正在使用同一VPC中公共子网上的一个实例,将代理请求反向到私有子网上的EC2和RDS实例

反向代理可以很好地用于HTTP到EC2实例。但是,我无法通过反向代理连接到RDS实例

我可以使用公共子网上的EC2实例,使用psql连接到RDS。但是,如果我反向代理,则会出现以下错误:

> psql --host=PUBLIC_IP --port=5432
psql: received invalid response to SSL negotiation: H

nginx access log: 
[PUBLIC_IP] - - [17/Apr/2018:10:51:45 +0000] "\x00\x00\x00\x08\x04\xD2\x16/" 400 174 "-" "-" "-"
如果我只是尝试另一个HTTP端口,则会出现相同的错误:

> psql --host=[PUBLIC_IP] --port=80
psql: received invalid response to SSL negotiation: H

nginx access log: 
[PUBLIC_IP] - - [17/Apr/2018:10:51:45 +0000] "\x00\x00\x00\x08\x04\xD2\x16/" 400 174 "-" "-" "-"
如果我从公共EC2实例尝试
localhost
,也会得到相同的错误:

> psql --host=localhost --port=5432 
psql: received invalid response to SSL negotiation: H

nginx access log: 
[PUBLIC_IP] - - [17/Apr/2018:10:51:45 +0000] "\x00\x00\x00\x08\x04\xD2\x16/" 400 174 "-" "-" "-"
但是,从公共EC2实例直接连接到私有子网中的RDS可以正常工作:

> psql --host=postgis-database.REDACTED.eu-central-1.rds.amazonaws.com --port=5432
Password:
所以nginx搞乱了连接并转发了错误的报头或IP之类的东西似乎是有道理的?H


此问题的解决方案是什么?如何通过nginx转发完全相同的连接内容?这可能是由于nginx连接的连接“关闭”造成的吗?

您解决了吗?并不是真的,最终改为使用SSH隧道。