AWS ECS部署的Wiki.js无法连接Postgres数据库问题排查
AWS ECS部署Wiki.js数据库连接问题排查
环境配置
ECS任务定义核心内容
{ "taskDefinitionArn": "xxx", "containerDefinitions": [ { "name": "wikijs", "image": "requarks/wiki:2", "portMappings": [ { "name": "wikijs-3000-tcp", "containerPort": 3000, "hostPort": 3000, "protocol": "tcp", "appProtocol": "http" }, { "name": "wikijs-80-tcp", "containerPort": 80, "hostPort": 80, "protocol": "tcp", "appProtocol": "http" } ], "environment": [ { "name": "DB_TYPE", "value": "postgres" }, { "name": "DB_SSL", "value": "false" }, { "name": "DB_PASS", "value": "password" }, { "name": "DB_PORT", "value": "5432" }, { "name": "DB_USER", "value": "postgres" }, { "name": "DB_NAME", "value": "wiki" }, { "name": "DB_HOST", "value": "wiki-db.xxx.xxx.rds.amazonaws.com" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/wikijs", "awslogs-region": "xxx", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": ["FARGATE"], "cpu": "256", "memory": "512", "runtimePlatform": { "cpuArchitecture": "ARM64", "operatingSystemFamily": "LINUX" } }
- 已在Postgres RDS中创建
wiki数据库 - 额外添加了80端口映射(官方指南仅要求配置3000端口)
问题现象
服务启动初始化正常,但数据库连接失败:
关闭SSL时的错误(DB_SSL=false)
- ======================================= - ======================================= - Initializing... - = Wiki.js 2.5.300 ===================== - Using database driver pg for postgres [ OK ] - Connecting to database... - Connecting to database... - Database Connection Error: 28000 undefined:undefined - Will retry in 3 seconds... [Attempt 10 of 10] - Connecting to database... - Database Initialization Error: no pg_hba.conf entry for host "<ecs task ip>", user "postgres", database "wiki", no encryption
将RDS参数rds.force_ssl设为false后,错误未消除。
开启SSL后的错误(DB_SSL=true)
- Database Initialization Error: self-signed certificate in certificate chain
解决方案
场景1:关闭SSL连接(仅测试环境建议)
- 校验RDS安全组:确保ECS任务所在VPC的安全组能访问RDS的5432端口,且RDS安全组已放行ECS任务的IP/安全组。
- 确认RDS参数组配置:
- 确保
rds.force_ssl已设为0(false),且参数组已应用到RDS实例(需重启实例生效)。 - 检查参数组中
pg_hba.conf相关规则,添加允许非SSL连接的条目:host wiki postgres <ECS任务VPC CIDR> scram-sha-256
- 确保
- 验证Wiki.js环境变量:确认
DB_SSL确实为false,无其他环境变量覆盖该设置。
场景2:启用SSL连接(生产环境推荐,符合AWS安全规范)
- 配置Wiki.js信任RDS证书:
- 在Wiki.js环境变量中添加
DB_SSL_CA,值填入AWS RDS根证书内容;或挂载证书文件到容器指定路径。 - 测试环境可临时设置
DB_SSL_REJECT_UNAUTHORIZED为false跳过证书验证(生产环境禁止):{ "name": "DB_SSL_REJECT_UNAUTHORIZED", "value": "false" }
- 在Wiki.js环境变量中添加
- 确认RDS SSL配置:将
rds.force_ssl设为1(true),强制所有连接使用SSL。
额外排查点
- 数据库用户权限:执行SQL确认
postgres用户拥有wiki数据库的连接权限:GRANT CONNECT ON DATABASE wiki TO postgres; ALTER USER postgres WITH LOGIN; - VPC网络连通性:在ECS任务所在VPC内,用
psql工具测试RDS连接,排除网络层面故障。
内容的提问来源于stack exchange,提问作者Whambulance
相关产品推荐
相关产品推荐

