无法从本地Mac连接AWS EC2实例上的PostgreSQL 10问题排查
PostgreSQL远程连接超时排查(AWS EC2 Ubuntu 18环境)
结论先行:不需要为PostgreSQL配置Nginx路由
PostgreSQL基于TCP协议提供服务,直接通过端口访问即可,Nginx默认是HTTP代理,没必要额外配置路由。以下是具体排查步骤:
检查EC2安全组规则细节
确认入站规则中5432端口的配置:- 协议必须选TCP(不是UDP)
- 源地址如果是
0.0.0.0/0要确保规则已应用到当前实例所属的安全组;更安全的做法是限制为你的Mac公网IP - 避免规则处于"未生效"状态(比如创建时选错了安全组)
排查Ubuntu系统防火墙(ufw)
Ubuntu默认可能启用ufw,即使安全组放行,系统防火墙也会拦截端口:- 查看防火墙状态:
sudo ufw status - 如果显示
active,添加5432端口放行规则:sudo ufw allow 5432/tcp - 重启防火墙生效:
sudo ufw reload
- 查看防火墙状态:
验证PostgreSQL监听配置
确保postgresql.conf的修改已生效:- 执行命令确认监听地址:
netstat -tulpn | grep 5432 - 输出需包含
0.0.0.0:5432和:::5432,若只有127.0.0.1:5432,说明配置未生效,重启PostgreSQL服务:sudo systemctl restart postgresql@10-main
- 执行命令确认监听地址:
检查VPC网络ACL
VPC层面的网络ACL是无状态的,入站和出站都需配置:- 进入AWS VPC控制台,找到实例所在子网的网络ACL
- 入站规则添加允许TCP 5432端口(源
0.0.0.0/0) - 出站规则添加允许所有TCP响应(或至少允许5432端口的出站流量)
排查本地网络限制
你的Mac所在网络可能存在防火墙或ISP拦截:- 切换到手机热点等其他网络测试连接
- 在EC2实例内部执行
telnet 实例公网IP 5432,若能连通则说明问题出在本地到EC2的网络通路
内容的提问来源于stack exchange,提问作者Renat Gatin
相关产品推荐
相关产品推荐

