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

AWS架构下提交表单出现504网关超时问题排查求助

排查步骤与解决方案

1. 优先检查Nginx错误日志

登录部署Nginx的EC2实例,查看错误日志(默认路径:/var/log/nginx/error.log),日志会直接给出转发失败的核心原因:

  • 若出现could not resolve host "DNS-NAME":说明Nginx无法解析内部ALB的域名,需确认VPC的enableDnsSupport和enableDnsHostname是否开启,同时在EC2上执行nslookup DNS-NAME验证解析结果。
  • 若出现connection timed out:说明Nginx到内部ALB的网络通路受阻,继续往下排查。

2. 验证Nginx到内部ALB的连通性

在Nginx服务器上执行curl命令模拟表单请求,直接测试网络通路:

curl -v http://DNS-NAME:3000/submit -X POST
  • 若命令超时:排除安全组后,重点检查VPC的网络访问控制列表(NACL):
    • 私有子网1的出站规则:需允许到私有子网2 CIDR的3000端口流量;
    • 私有子网2的入站规则:需允许来自私有子网1 CIDR的3000端口流量;
      NACL是无状态规则,必须双向配置允许。

3. 修正Nginx proxy_pass路径匹配

当前location /submit的proxy_pass未带末尾斜杠,会将完整的/submit路径转发到内部ALB。若Node.js的接口监听的是根路径(app.post('/', ...)),需修改配置:

location /submit {
    proxy_pass http://DNS-NAME:3000/;  # 添加末尾斜杠,将/submit映射到目标根路径
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

修改后执行nginx -s reload生效,再测试表单提交。

4. 确认内部ALB目标组状态

检查内部ALB的目标组,确认Node.js EC2实例的健康检查状态为健康。若目标组不健康,ALB会拒绝转发流量,结合你提到的“LB未收到流量”,此问题概率较低,但仍需排除。

5. 检查Nginx是否限制HTTP方法

确认Nginx的server块中未限制POST方法,默认配置允许所有HTTP方法,若存在limit_except指令需确保包含POST:

server {
    # ... 其他配置
    limit_except GET HEAD POST {
        deny all;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:43:38