如何在 NGINX for PostgreSQL 上配置 proxy_pass?

Fom*_*aut 5 postgresql nginx

我有一个 PostgreSQL 服务器在端口15432上的远程计算机上启动。我想配置 NGINX 以使数据库可以通过主机db.domain.my和端口5432远程使用。我尝试的配置是:

server {
    listen 5432;
    server_name db.domain.my;

    location / {
        proxy_pass http://127.0.0.1:15432/;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用psql远程连接数据库时,出现错误:

$ psql -h db.domain.my -U myuser
psql: received invalid response to SSL negotiation: H
Run Code Online (Sandbox Code Playgroud)

我也尝试添加ssl字,但listen 5432没有成功。

如何正确配置 NGINX?

qrä*_*bnö 5

可能会删除,http://因为它是 TCP 连接(不是 HTTP 连接)并添加,so_keepalive=on以便listen 5432;连接保持打开状态。

也许您必须使用stream而不是http阻止:https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

  • “stream”的想法听起来不错。谢谢你的链接。根据此主题,我无法为流指定“server_name”:https://forum.nginx.org/read.php?2,263208,263217。所以我唯一可以做的就是在 NGINX 配置中使用“stream”进行端口转发。我想这就是答案。谢谢。 (2认同)