You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置PostgreSQL远程访问 解决Nginx代理连接超时问题

连接超时根因

三个配置错误直接导致连接失败:

  • PostgreSQL使用自定义二进制TCP协议通信,你当前配置的是Nginx HTTP反向代理,proxy_pass http://规则仅能转发HTTP/HTTPS流量,完全无法处理PG的协议请求。
  • 你的连接串指定访问5433端口,但当前Nginx仅监听80、443端口,5433端口无任何服务监听,请求直接被丢弃。
  • Cloudflare默认代理模式(橙色云)不转发非HTTP/HTTPS标准端口的TCP流量,数据库类私有协议请求会被Cloudflare拦截。
快速修复方案(适配你优先快速可用、暂不考虑安全/效率的需求)

方案一:用Nginx Stream模块做TCP层转发(复用现有Nginx部署)

  1. 先执行nginx -V检查输出是否包含--with-stream参数,绝大多数默认源安装的Nginx都内置该模块,无需额外编译。
  2. 编辑Nginx主配置文件,在与http {}块同级的位置新增stream {}配置块(不要写在http块内部),配置TCP流量转发规则:
stream {
    server {
        listen 5433;
        proxy_pass 192.168.1.100:5432;
        proxy_connect_timeout 10s;
        proxy_timeout 600s;
    }
}
  1. 删除你之前在http {}块内写的pg.mydomain.net相关80、443端口转发PG的server配置,该类HTTP代理规则对PG服务无效。
  2. 执行nginx -t校验配置无错后,执行nginx -s reload重载配置生效。
  3. 前往Cloudflare控制台,将pg.mydomain.net的解析状态调整为仅DNS(灰色云朵图标),关闭Cloudflare代理转发。
  4. 新增防火墙规则,放开5433端口对应访问网段的访问权限。

方案二:零额外配置快速暴露(比改Nginx更省事)

如果不想调整Nginx配置,直接在Cloudflare把pg.mydomain.net解析设为仅DNS(灰色云),把连接串的端口改成5432,同时在防火墙放开公网对192.168.1.100的5432端口访问权限,就能直接连接,连Nginx转发都不需要,完全满足临时快速使用的需求。

连通性验证

配置完成后本地执行telnet pg.mydomain.net 5433(如果用方案二就测5432端口),端口能连通的话,直接在Jupyter Notebook里用标准postgresql连接串就能正常访问,psycopg2、sqlalchemy等常用驱动都能兼容。

提示:该配置未做权限控制、流量加密,仅适合临时给朋友测试用,不要存储敏感数据,测试完成后记得关闭公网端口权限。

内容的提问来源于stack exchange,提问作者kjekk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:09:23