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

部署在AWS EC2的Express API无法访问?排查连接超时问题

问题排查与解决方案

你的报错connect ETIMEDOUT 172.31.2.86:5432和CORS配置无关,这个错误是Express应用无法连接PostgreSQL数据库导致的,以下是你可能遗漏的关键配置:

1. PostgreSQL数据库访问权限配置

  • 若PostgreSQL部署在同一EC2实例:
    • 修改pg_hba.conf,添加允许EC2内网IP连接的规则:
      host    all             all             172.31.2.86/32        scram-sha-256
      
    • 编辑postgresql.conf,将listen_addresses设为'*'或指定该内网IP,允许本地应用连接,之后重启PostgreSQL服务。
  • 若PostgreSQL部署在AWS RDS/外部服务器:
    • 检查RDS安全组,确认已开放5432端口给EC2实例的内网IP;若是外部数据库,需确保数据库服务器的防火墙/安全组允许EC2的IP访问5432端口。

2. EC2安全组规则配置

  • 出站规则:确认EC2安全组允许访问数据库的5432端口(目标地址为数据库IP/网段),默认出站规则通常全开放,但自定义规则需排除限制。
  • 入站规则:若要从本地访问EC2的3000端口API,需添加入站规则:类型选Custom TCP,端口3000,来源设为你的本地公网IP(测试时可临时用0.0.0.0/0,生产环境禁用)。

3. 应用数据库连接参数校验

  • 检查Express应用的数据库连接配置,确保IP、端口、用户名、密码与数据库实际配置一致。以pg库为例,正确的连接配置示例:
    const { Pool } = require('pg');
    const pool = new Pool({
      user: 'db_user',
      host: '172.31.2.86',
      database: 'target_db',
      password: 'db_password',
      port: 5432,
    });
    

4. EC2本地防火墙配置

  • 若EC2实例启用了本地防火墙(如Ubuntu的ufw、CentOS的firewalld),需确认:
    • 允许出站访问5432端口(供应用连数据库);
    • 允许入站访问3000端口(供本地调用API)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:57:30